home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / dev / gcc / gcc263_doc.lha / gnu / man / man1 / gcc.1 < prev    next >
Text File  |  1994-12-19  |  175KB  |  3,565 lines

  1.  
  2.  
  3.  
  4. GCC(1)                      GNU Tools                      GCC(1)
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      gcc, g++ - GNU project C and C++ Compiler (v2.6)
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      ggggcccccccc [ _o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
  13.      gggg++++++++ [ _o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
  14.  
  15. WWWWAAAARRRRNNNNIIIINNNNGGGG
  16.      The information in this man page is an extract from the full
  17.      documentation  of  the GNU C compiler, and is limited to the
  18.      meaning of the options.
  19.  
  20.      This man page is not kept up to date except when  volunteers
  21.      want  to maintain it.  If you find a discrepancy between the
  22.      man page and the software, please check the Info file, which
  23.      is the authoritative documentation.
  24.  
  25.      If we find that the things in this man page that are out  of
  26.      date cause significant confusion or complaints, we will stop
  27.      distributing the man page.  The  alternative,  updating  the
  28.      man page when we update the Info file, is impossible because
  29.      the rest of the work of maintaining GNU CC leaves us no time
  30.      for that.  The GNU project regards man pages as obsolete and
  31.      should not let them take time away from other things.
  32.  
  33.      For complete and current documentation, refer  to  the  Info
  34.      file  `ggggcccccccc' or the manual _U_s_i_n_g _a_n_d _P_o_r_t_i_n_g _G_N_U _C_C (_f_o_r _v_e_r_-
  35.      _s_i_o_n _2._0).  Both are  made  from  the  Texinfo  source  file
  36.      ggggcccccccc....tttteeeexxxxiiiinnnnffffoooo.
  37.  
  38. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  39.      The C and C++ compilers are integrated.  Both process  input
  40.      files  through  one  or  more of four stages: preprocessing,
  41.      compilation, assembly, and linking.   Source  filename  suf-
  42.      fixes  identify  the source language, but which name you use
  43.      for the compiler governs default assumptions:
  44.  
  45.      ggggcccccccc  assumes preprocessed (....iiii) files are  C  and  assumes  C
  46.           style linking.
  47.  
  48.      gggg++++++++  assumes preprocessed (....iiii) files are C++ and assumes C++
  49.           style linking.
  50.  
  51.      Suffixes of source file names indicate the language and kind
  52.      of processing to be done:
  53.  
  54.      ....cccc    C source; preprocess, compile, assemble
  55.      ....CCCC    C++ source; preprocess, compile, assemble
  56.      ....cccccccc   C++ source; preprocess, compile, assemble
  57.      ....ccccxxxxxxxx  C++ source; preprocess, compile, assemble
  58.      ....mmmm    Objective-C source; preprocess, compile, assemble
  59.      ....iiii    preprocessed C; compile, assemble
  60.  
  61.  
  62.  
  63. GNU Tools            Last change: 1993/10/13                    1
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. GCC(1)                      GNU Tools                      GCC(1)
  71.  
  72.  
  73.  
  74.      ....iiiiiiii   preprocessed C++; compile, assemble
  75.      ....ssss    Assembler source; assemble
  76.      ....SSSS    Assembler source; preprocess, assemble
  77.      ....hhhh    Preprocessor file; not usually named on command line
  78.  
  79.      Files with other suffixes are passed to the linker.   Common
  80.      cases include:
  81.  
  82.      ....oooo    Object file
  83.      ....aaaa    Archive file
  84.  
  85.      Linking is always the last stage unless you use one of the ----
  86.      cccc,   ---- SSSS,  or  ----EEEE options to avoid it (or unless compilation
  87.      errors stop the whole process).  For the link stage, all  ....oooo
  88.      files  corresponding to source files, ----llll libraries, unrecog-
  89.      nized filenames (including named  ....oooo  object  files  and  ....aaaa
  90.      archives) are passed to the linker in command-line order.
  91.  
  92. OOOOPPPPTTTTIIIIOOOONNNNSSSS
  93.      Options must be separate: `----ddddrrrr' is quite different from `---- dddd
  94.      ----rrrr '.
  95.  
  96.      Most `----ffff' and `----WWWW' options have two contrary forms:  ---- ffff_n_a_m_e
  97.      and   ---- ffffnnnnoooo ---- _n_a_m_e (or ----WWWW_n_a_m_e and ----WWWWnnnnoooo----_n_a_m_e).  Only the non-
  98.      default forms are shown here.
  99.  
  100.      Here is a summary of  all  the  options,  grouped  by  type.
  101.      Explanations are in the following sections.
  102.  
  103.      OOOOvvvveeeerrrraaaallllllll OOOOppppttttiiiioooonnnnssss
  104.           -c -S -E -o _f_i_l_e -pipe -v -x _l_a_n_g_u_a_g_e
  105.  
  106.      LLLLaaaannnngggguuuuaaaaggggeeee OOOOppppttttiiiioooonnnnssss
  107.           -ansi -fall-virtual -fcond-mismatch -fdollars-in-
  108.           identifiers -fenum-int-equiv -fexternal-templates -fno-
  109.           asm -fno-builtin -fno-strict-prototype -fsigned-
  110.           bitfields -fsigned-char -fthis-is-variable -funsigned-
  111.           bitfields -funsigned-char -fwritable-strings -
  112.           traditional -traditional-cpp -trigraphs
  113.  
  114.      WWWWaaaarrrrnnnniiiinnnngggg OOOOppppttttiiiioooonnnnssss
  115.           -fsyntax-only -pedantic -pedantic-errors -w -W -Wall -
  116.           Waggregate-return -Wcast-align -Wcast-qual -Wchar-
  117.           subscript -Wcomment -Wconversion -Wenum-clash -Werror -
  118.           Wformat -Wid-clash-_l_e_n -Wimplicit -Winline -Wmissing-
  119.           prototypes -Wmissing-declarations -Wnested-externs -Wno
  120.           -import -Wparentheses -Wpointer-arith -Wredundant-decls
  121.           -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch -
  122.           Wtemplate-debugging -Wtraditional -Wtrigraphs -
  123.           Wuninitialized -Wunused -Wwrite-strings
  124.  
  125.      DDDDeeeebbbbuuuuggggggggiiiinnnngggg OOOOppppttttiiiioooonnnnssss
  126.  
  127.  
  128.  
  129. GNU Tools            Last change: 1993/10/13                    2
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. GCC(1)                      GNU Tools                      GCC(1)
  137.  
  138.  
  139.  
  140.           -a -d_l_e_t_t_e_r_s -fpretend-float -g -g_l_e_v_e_l -gcoff -gxcoff
  141.           -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+ -ggdb -p -pg
  142.           -save-temps -print-file-name=_l_i_b_r_a_r_y -print-libgcc-file
  143.           -name -print-prog-name=_p_r_o_g_r_a_m
  144.  
  145.      OOOOppppttttiiiimmmmiiiizzzzaaaattttiiiioooonnnn OOOOppppttttiiiioooonnnnssss
  146.           -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks -
  147.           fdelayed-branch -felide-constructors -fexpensive-
  148.           optimizations -ffast-math -ffloat-store -fforce-addr -
  149.           fforce-mem -finline-functions -fkeep-inline-functions -
  150.           fmemoize-lookups -fno-default-inline -fno-defer-pop -
  151.           fno-function-cse -fno-inline -fno-peephole -fomit-frame
  152.           -pointer -frerun-cse-after-loop -fschedule-insns -
  153.           fschedule-insns2 -fstrength-reduce -fthread-jumps -
  154.           funroll-all-loops -funroll-loops -O -O2
  155.  
  156.      PPPPrrrreeeepppprrrroooocccceeeessssssssoooorrrr OOOOppppttttiiiioooonnnnssss
  157.           -A_a_s_s_e_r_t_i_o_n -C -dD -dM -dN -D_m_a_c_r_o[=_d_e_f_n] -E -H -
  158.           idirafter _d_i_r -include _f_i_l_e -imacros _f_i_l_e -iprefix _f_i_l_e
  159.           -iwithprefix _d_i_r -M -MD -MM -MMD -nostdinc -P -U_m_a_c_r_o -
  160.           undef
  161.  
  162.      AAAAsssssssseeeemmmmbbbblllleeeerrrr OOOOppppttttiiiioooonnnn
  163.           -Wa,_o_p_t_i_o_n
  164.  
  165.      LLLLiiiinnnnkkkkeeeerrrr OOOOppppttttiiiioooonnnnssss
  166.           -l_l_i_b_r_a_r_y -nostartfiles -nostdlib -static -shared -
  167.           symbolic -Xlinker _o_p_t_i_o_n -Wl,_o_p_t_i_o_n -u _s_y_m_b_o_l
  168.  
  169.      DDDDiiiirrrreeeeccccttttoooorrrryyyy OOOOppppttttiiiioooonnnnssss
  170.           -B_p_r_e_f_i_x -I_d_i_r -I- -L_d_i_r
  171.  
  172.      TTTTaaaarrrrggggeeeetttt OOOOppppttttiiiioooonnnnssss
  173.           -b  _m_a_c_h_i_n_e -V _v_e_r_s_i_o_n
  174.  
  175.      CCCCoooonnnnffffiiiigggguuuurrrraaaattttiiiioooonnnn DDDDeeeeppppeeeennnnddddeeeennnntttt OOOOppppttttiiiioooonnnnssss
  176.           _M_6_8_0_x_0 _O_p_t_i_o_n_s
  177.           -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881 -
  178.           mbitfield -mc68000 -mc68020 -mfpa -mnobitfield -mrtd -
  179.           mshort -msoft-float
  180.  
  181.           _V_A_X _O_p_t_i_o_n_s
  182.           -mg -mgnu -munix
  183.  
  184.           _S_P_A_R_C _O_p_t_i_o_n_s
  185.           -mepilogue -mfpu -mhard-float -mno-fpu -mno-epilogue -
  186.           msoft-float -msparclite -mv8 -msupersparc -mcypress
  187.  
  188.           _C_o_n_v_e_x _O_p_t_i_o_n_s
  189.           -margcount -mc1 -mc2 -mnoargcount
  190.  
  191.           _A_M_D_2_9_K _O_p_t_i_o_n_s
  192.  
  193.  
  194.  
  195. GNU Tools            Last change: 1993/10/13                    3
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. GCC(1)                      GNU Tools                      GCC(1)
  203.  
  204.  
  205.  
  206.           -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge -
  207.           mnbw -mnodw -msmall -mstack-check -muser-registers
  208.  
  209.           _M_8_8_K _O_p_t_i_o_n_s
  210.           -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division
  211.           -mhandle-large-shift -midentify-revision -mno-check-
  212.           zero-division -mno-ocs-debug-info -mno-ocs-frame-
  213.           position -mno-optimize-arg-area -mno-seriazlize-
  214.           volatile -mno-underscores -mocs-debug-info -mocs-frame-
  215.           position -moptimize-arg-area -mserialize-volatile -
  216.           mshort-data-_n_u_m -msvr3 -msvr4 -mtrap-large-shift -muse-
  217.           div-instruction -mversion-03.00 -mwarn-passed-structs
  218.  
  219.           _R_S_6_0_0_0 _O_p_t_i_o_n_s
  220.           -mfp-in-toc -mno-fop-in-toc
  221.  
  222.           _R_T _O_p_t_i_o_n_s
  223.           -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs -
  224.           mfull-fp-blocks -mhc-struct-return -min-line-mul -
  225.           mminimum-fp-blocks -mnohc-struct-return
  226.  
  227.           _M_I_P_S _O_p_t_i_o_n_s
  228.           -mcpu=_c_p_u _t_y_p_e -mips2 -mips3 -mint64 -mlong64 -
  229.           mlonglong128 -mmips-as -mgas -mrnames -mno-rnames -
  230.           mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy -mno-
  231.           memcpy -mno-mips-tfile -mmips-tfile -msoft-float -mhard
  232.           -float -mabicalls -mno-abicalls -mhalf-pic -mno-half-
  233.           pic -G _n_u_m -nocpp
  234.  
  235.           _i_3_8_6 _O_p_t_i_o_n_s
  236.           -m486 -mno-486 -msoft-float -mno-fp-ret-in-387
  237.  
  238.           _H_P_P_A _O_p_t_i_o_n_s
  239.           -mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs -mno
  240.           -shared-libs -mlong-calls -mdisable-fpregs -mdisable-
  241.           indexing -mtrailing-colon
  242.  
  243.           _i_9_6_0 _O_p_t_i_o_n_s
  244.           -m_c_p_u-_t_y_p_e -mnumerics -msoft-float -mleaf-procedures -
  245.           mno-leaf-procedures -mtail-call -mno-tail-call -
  246.           mcomplex-addr -mno-complex-addr -mcode-align -mno-code-
  247.           align -mic-compat -mic2.0-compat -mic3.0-compat -masm-
  248.           compat -mintel-asm -mstrict-align -mno-strict-align -
  249.           mold-align -mno-old-align
  250.  
  251.           _D_E_C _A_l_p_h_a _O_p_t_i_o_n_s
  252.           -mfp-regs -mno-fp-regs -mno-soft-float -msoft-float
  253.  
  254.           _S_y_s_t_e_m _V _O_p_t_i_o_n_s
  255.           -G -Qy -Qn -YP,_p_a_t_h_s -Ym,_d_i_r
  256.  
  257.      CCCCooooddddeeee GGGGeeeennnneeeerrrraaaattttiiiioooonnnn OOOOppppttttiiiioooonnnnssss
  258.  
  259.  
  260.  
  261. GNU Tools            Last change: 1993/10/13                    4
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. GCC(1)                      GNU Tools                      GCC(1)
  269.  
  270.  
  271.  
  272.           -fcall-saved-_r_e_g -fcall-used-_r_e_g -ffixed-_r_e_g -finhibit-
  273.           size-directive -fnonnull-objects -fno-common -fno-ident
  274.           -fno-gnu-linker -fpcc-struct-return -fpic -fPIC -freg-
  275.           struct-returno -fshared-data -fshort-enums -fshort-
  276.           double -fvolatile -fvolatile-global -fverbose-asm
  277.  
  278. OOOOVVVVEEEERRRRAAAALLLLLLLL OOOOPPPPTTTTIIIIOOOONNNNSSSS
  279.      ----xxxx _l_a_n_g_u_a_g_e
  280.           Specify explicitly the _l_a_n_g_u_a_g_e for the following input
  281.           files (rather than choosing a default based on the file
  282.           name suffix) .  This option applies  to  all  following
  283.           input  files  until  the  next  ` ----xxxx' option.  Possible
  284.           values of _l_a_n_g_u_a_g_e are `cccc', `oooobbbbjjjjeeeeccccttttiiiivvvveeee----cccc', `cccc---- hhhheeeeaaaaddddeeeerrrr',
  285.           `cccc++++++++',  `ccccpppppppp----oooouuuuttttppppuuuutttt', `aaaasssssssseeeemmmmbbbblllleeeerrrr', and `aaaasssssssseeeemmmmbbbblllleeeerrrr----wwwwiiiitttthhhh----
  286.           ccccpppppppp'.
  287.  
  288.      ----xxxx nnnnoooonnnneeee
  289.           Turn off any specification of a language, so that  sub-
  290.           sequent  files are handled according to their file name
  291.           suffixes (as they are if `----xxxx'  has  not  been  used  at
  292.           all).
  293.  
  294.      If you want only some of the four stages  (preprocess,  com-
  295.      pile,  assemble,  link),  you can use `----xxxx' (or filename suf-
  296.      fixes) to tell ggggcccccccc where to start, and one of the options `----
  297.      cccc',  ` ---- SSSS', or `----EEEE' to say where ggggcccccccc is to stop.  Note that
  298.      some combinations (for example, `----xxxx ccccpppppppp----oooouuuuttttppppuuuutttt ----EEEE') instruct
  299.      ggggcccccccc to do nothing at all.
  300.  
  301.      ----cccc    Compile or assemble the source files, but do not link.
  302.           The  compiler output is an object file corresponding to
  303.           each source file.
  304.  
  305.           By default, GCC makes the object file name for a source
  306.           file  by  replacing  the suffix `....cccc', `....iiii', `....ssss', etc.,
  307.           with `....oooo'.  Use ----oooo to select another name.
  308.  
  309.           GCC ignores any unrecognized input files (those that do
  310.           not  require  compilation  or assembly) with the ----cccc op-
  311.           tion.
  312.  
  313.      ----SSSS    Stop after the stage of compilation proper; do not as-
  314.           semble.   The output is an assembler code file for each
  315.           non-assembler input file specified.
  316.  
  317.           By default, GCC makes the assembler  file  name  for  a
  318.           source  file  by replacing the suffix `....cccc', `....iiii', etc.,
  319.           with `....ssss'.  Use ----oooo to select another name.
  320.  
  321.           GCC ignores any input files that don't require compila-
  322.           tion.
  323.  
  324.  
  325.  
  326.  
  327. GNU Tools            Last change: 1993/10/13                    5
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. GCC(1)                      GNU Tools                      GCC(1)
  335.  
  336.  
  337.  
  338.      ----EEEE    Stop after the preprocessing stage;  do  not  run  the
  339.           compiler  proper.   The  output  is preprocessed source
  340.           code, which is sent to the standard output.
  341.  
  342.           GCC ignores input files which don't require preprocess-
  343.           ing.
  344.  
  345.      ----oooo _f_i_l_e
  346.           Place output in file _f_i_l_e.  This applies regardless  to
  347.           whatever sort of output GCC is producing, whether it be
  348.           an executable file, an object file, an  assembler  file
  349.           or preprocessed C code.
  350.  
  351.           Since only one output file can be  specified,  it  does
  352.           not make sense to use `----oooo' when compiling more than one
  353.           input file, unless you are producing an executable file
  354.           as output.
  355.  
  356.           If you do not specify `----oooo', the default is  to  put  an
  357.           executable   file  in  `aaaa....oooouuuutttt',  the  object  file  for
  358.           `_s_o_u_r_c_e...._s_u_f_f_i_x' in `_s_o_u_r_c_e....oooo', its  assembler  file  in
  359.           `_s_o_u_r_c_e....ssss',  and  all preprocessed C source on standard
  360.           output.
  361.  
  362.      ----vvvv    Print (on standard error output) the commands executed
  363.           to  run the stages of compilation.  Also print the ver-
  364.           sion number of the compiler driver program and  of  the
  365.           preprocessor and the compiler proper.
  366.  
  367.      ----ppppiiiippppeeee
  368.           Use pipes rather than temporary files for communication
  369.           between  the various stages of compilation.  This fails
  370.           to work on some systems where the assembler cannot read
  371.           from a pipe; but the GNU assembler has no trouble.
  372.  
  373. LLLLAAAANNNNGGGGUUUUAAAAGGGGEEEE OOOOPPPPTTTTIIIIOOOONNNNSSSS
  374.      The following options control the dialect of C that the com-
  375.      piler accepts:
  376.  
  377.      ----aaaannnnssssiiii
  378.           Support all ANSI standard C programs.
  379.  
  380.           This turns off certain features of GNU C that  are  in-
  381.           compatible  with  ANSI  C,  such as the aaaassssmmmm, iiiinnnnlllliiiinnnneeee and
  382.           ttttyyyyppppeeeeooooffff keywords, and predefined macros such as uuuunnnniiiixxxx and
  383.           vvvvaaaaxxxx that identify the type of system you are using.  It
  384.           also enables the undesirable and rarely used ANSI  tri-
  385.           graph  feature,  and  disallows `$$$$' as part of identif-
  386.           iers.
  387.  
  388.           The alternate keywords  ________aaaassssmmmm________,  ________eeeexxxxtttteeeennnnssssiiiioooonnnn________,  ________iiiinnnn----
  389.           lllliiiinnnneeee________ and ________ttttyyyyppppeeeeooooffff________ continue to work despite `----aaaannnnssssiiii'.
  390.  
  391.  
  392.  
  393. GNU Tools            Last change: 1993/10/13                    6
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. GCC(1)                      GNU Tools                      GCC(1)
  401.  
  402.  
  403.  
  404.           You would not want to use them in an ANSI C program, of
  405.           course,  but  it  is useful to put them in header files
  406.           that might be included in compilations  done  with  ` ----
  407.           aaaannnnssssiiii'.   Alternate  predefined  macros such as ________uuuunnnniiiixxxx________
  408.           and ________vvvvaaaaxxxx________ are also available,  with  or  without  ` ----
  409.           aaaannnnssssiiii'.
  410.  
  411.           The `----aaaannnnssssiiii' option does not cause non-ANSI programs  to
  412.           be rejected gratuitously.  For that, `----ppppeeeeddddaaaannnnttttiiiicccc' is re-
  413.           quired in addition to `----aaaannnnssssiiii'.
  414.  
  415.           The preprocessor  predefines  a  macro  ________SSSSTTTTRRRRIIIICCCCTTTT____AAAANNNNSSSSIIII________
  416.           when you use the `----aaaannnnssssiiii' option.  Some header files may
  417.           notice this macro and refrain  from  declaring  certain
  418.           functions  or  defining  certain  macros  that the ANSI
  419.           standard doesn't call for; this is to avoid interfering
  420.           with  any programs that might use these names for other
  421.           things.
  422.  
  423.      ----ffffnnnnoooo----aaaassssmmmm
  424.           Do not recognize aaaassssmmmm, iiiinnnnlllliiiinnnneeee or ttttyyyyppppeeeeooooffff  as  a  keyword.
  425.           These  words  may then be used as identifiers.  You can
  426.           use ________aaaassssmmmm________, ________iiiinnnnlllliiiinnnneeee________ and  ________ttttyyyyppppeeeeooooffff________  instead.   ` ----
  427.           aaaannnnssssiiii' implies `----ffffnnnnoooo----aaaassssmmmm'.
  428.  
  429.      ----ffffnnnnoooo----bbbbuuuuiiiillllttttiiiinnnn
  430.           Don't recognize built-in functions that  do  not  begin
  431.           with two leading underscores.  Currently, the functions
  432.           affected include ____eeeexxxxiiiitttt, aaaabbbboooorrrrtttt, aaaabbbbssss, aaaallllllllooooccccaaaa, ccccoooossss,  eeeexxxxiiiitttt,
  433.           ffffaaaabbbbssss,  llllaaaabbbbssss, mmmmeeeemmmmccccmmmmpppp, mmmmeeeemmmmccccppppyyyy, ssssiiiinnnn, ssssqqqqrrrrtttt, ssssttttrrrrccccmmmmpppp, ssssttttrrrrccccppppyyyy,
  434.           and ssssttttrrrrlllleeeennnn.
  435.  
  436.           The `----aaaannnnssssiiii' option prevents aaaallllllllooooccccaaaa and ____eeeexxxxiiiitttt from being
  437.           builtin functions.
  438.  
  439.      ----ffffnnnnoooo----ssssttttrrrriiiicccctttt----pppprrrroooottttoooottttyyyyppppeeee
  440.           Treat a function declaration with no arguments, such as
  441.           `iiiinnnntttt  ffffoooooooo  ();',  as C would treat it-as saying nothing
  442.           about the number  of  arguments  or  their  types  (C++
  443.           only).   Normally, such a declaration in C++ means that
  444.           the function ffffoooooooo takes no arguments.
  445.  
  446.      ----ttttrrrriiiiggggrrrraaaapppphhhhssss
  447.           Support ANSI C trigraphs.  The `----aaaannnnssssiiii' option implies `
  448.           ----ttttrrrriiiiggggrrrraaaapppphhhhssss'.
  449.  
  450.      ----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll
  451.           Attempt to support some aspects of traditional  C  com-
  452.           pilers.   For details, see the GNU C Manual; the dupli-
  453.           cate list here has been deleted so that  we  won't  get
  454.           complaints when it is out of date.
  455.  
  456.  
  457.  
  458.  
  459. GNU Tools            Last change: 1993/10/13                    7
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. GCC(1)                      GNU Tools                      GCC(1)
  467.  
  468.  
  469.  
  470.           But one note about C++ programs only (not C).  `----ttttrrrraaaaddddiiii----
  471.           ttttiiiioooonnnnaaaallll'  has  one additional effect for C++: assignment
  472.           to tttthhhhiiiissss is permitted.  This is the same as  the  effect
  473.           of `----fffftttthhhhiiiissss----iiiissss----vvvvaaaarrrriiiiaaaabbbblllleeee'.
  474.  
  475.      ----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll----ccccpppppppp
  476.           Attempt  to  support  some  aspects  of  traditional  C
  477.           preprocessors.   This  includes the items that specifi-
  478.           cally mention the preprocessor above, but none  of  the
  479.           other effects of `----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll'.
  480.  
  481.      ----ffffddddoooollllllllaaaarrrrssss----iiiinnnn----iiiiddddeeeennnnttttiiiiffffiiiieeeerrrrssss
  482.           Permit the use of `$$$$' in identifiers (C++  only).   You
  483.           can also use `----ffffnnnnoooo----ddddoooollllllllaaaarrrrssss----iiiinnnn----iiiiddddeeeennnnttttiiiiffffiiiieeeerrrrssss' to explicit-
  484.           ly prohibit use of `$$$$'.  (GNU C++ allows `$$$$' by default
  485.           on some target systems but not others.)
  486.  
  487.      ----ffffeeeennnnuuuummmm----iiiinnnntttt----eeeeqqqquuuuiiiivvvv
  488.           Permit implicit conversion of iiiinnnntttt to enumeration  types
  489.           (C++ only).  Normally GNU C++ allows conversion of eeeennnnuuuummmm
  490.           to iiiinnnntttt, but not the other way around.
  491.  
  492.      ----ffffeeeexxxxtttteeeerrrrnnnnaaaallll----tttteeeemmmmppppllllaaaatttteeeessss
  493.           Produce smaller code for template declarations, by gen-
  494.           erating  only  a  single copy of each template function
  495.           where it is defined (C++ only).   To  use  this  option
  496.           successfully,  you  must  also  mark all files that use
  497.           templates with either `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn' (the de-
  498.           finition) or `####pppprrrraaaaggggmmmmaaaa iiiinnnntttteeeerrrrffffaaaacccceeee' (declarations).
  499.  
  500.           When your code is compiled with `----ffffeeeexxxxtttteeeerrrrnnnnaaaallll----tttteeeemmmmppppllllaaaatttteeeessss',
  501.           all template instantiations are external.  You must ar-
  502.           range for all necessary instantiations to appear in the
  503.           implementation  file;  you  can  do this with a ttttyyyyppppeeeeddddeeeeffff
  504.           that references each instantiation needed.  Conversely,
  505.           when  you compile using the default option `----ffffnnnnoooo----eeeexxxxtttteeeerrrr----
  506.           nnnnaaaallll----tttteeeemmmmppppllllaaaatttteeeessss', all template instantiations are  expli-
  507.           citly internal.
  508.  
  509.      ----ffffaaaallllllll----vvvviiiirrrrttttuuuuaaaallll
  510.           Treat all possible member functions as virtual,  impli-
  511.           citly.   All  member  functions (except for constructor
  512.           functions and  nnnneeeewwww  or  ddddeeeelllleeeetttteeee  member  operators)  are
  513.           treated  as  virtual  functions of the class where they
  514.           appear.
  515.  
  516.           This does not mean that all calls to these member func-
  517.           tions will be made through the internal table of virtu-
  518.           al functions.  Under some circumstances,  the  compiler
  519.           can  determine  that a call to a given virtual function
  520.           can be made directly; in  these  cases  the  calls  are
  521.           direct in any case.
  522.  
  523.  
  524.  
  525. GNU Tools            Last change: 1993/10/13                    8
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. GCC(1)                      GNU Tools                      GCC(1)
  533.  
  534.  
  535.  
  536.      ----ffffccccoooonnnndddd----mmmmiiiissssmmmmaaaattttcccchhhh
  537.           Allow conditional expressions with mismatched types  in
  538.           the  second  and third arguments.  The value of such an
  539.           expression is void.
  540.  
  541.      ----fffftttthhhhiiiissss----iiiissss----vvvvaaaarrrriiiiaaaabbbblllleeee
  542.           Permit assignment to tttthhhhiiiissss (C++ only).   The  incorpora-
  543.           tion of user-defined free store management into C++ has
  544.           made assignment to `tttthhhhiiiissss' an  anachronism.   Therefore,
  545.           by  default  it  is  invalid to assign to tttthhhhiiiissss within a
  546.           class member function.  However, for backwards compati-
  547.           bility,  you  can  make  it  valid  with  ` ---- fffftttthhhhiiiissss----iiiissss----
  548.           vvvvaaaarrrriiiiaaaabbbblllleeee'.
  549.  
  550.      ----ffffuuuunnnnssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr
  551.           Let the type cccchhhhaaaarrrr be unsigned, like uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr.
  552.  
  553.           Each kind of machine has a default for what cccchhhhaaaarrrr should
  554.           be.  It is either like uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr by default or like
  555.           ssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr by default.
  556.  
  557.           Ideally, a portable program should  always  use  ssssiiiiggggnnnneeeedddd
  558.           cccchhhhaaaarrrr or uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr when it depends on the signedness
  559.           of an object.  But many programs have been  written  to
  560.           use plain cccchhhhaaaarrrr and expect it to be signed, or expect it
  561.           to be unsigned, depending on  the  machines  they  were
  562.           written  for.   This  option,  and its inverse, let you
  563.           make such a program work with the opposite default.
  564.  
  565.           The type cccchhhhaaaarrrr is always a distinct type  from  each  of
  566.           ssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr and uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr, even though its behavior
  567.           is always just like one of those two.
  568.  
  569.      ----ffffssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr
  570.           Let the type cccchhhhaaaarrrr be signed, like ssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr.
  571.  
  572.           Note that this is equivalent to `----ffffnnnnoooo----uuuunnnnssssiiiiggggnnnneeeedddd ---- cccchhhhaaaarrrr',
  573.           which is the negative form of `----ffffuuuunnnnssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr'.  Like-
  574.           wise, `----ffffnnnnoooo----ssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr' is equivalent to `----ffffuuuunnnnssssiiiiggggnnnneeeedddd ----
  575.           cccchhhhaaaarrrr'.
  576.  
  577.      ----ffffssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
  578.  
  579.      ----ffffuuuunnnnssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
  580.  
  581.      ----ffffnnnnoooo----ssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
  582.  
  583.      ----ffffnnnnoooo----uuuunnnnssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
  584.           These options control whether a bitfield is  signed  or
  585.           unsigned,  when  declared  with no explicit `ssssiiiiggggnnnneeeedddd' or
  586.           `uuuunnnnssssiiiiggggnnnneeeedddd' qualifier.  By default, such a  bitfield  is
  587.           signed,  because  this is consistent: the basic integer
  588.  
  589.  
  590.  
  591. GNU Tools            Last change: 1993/10/13                    9
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. GCC(1)                      GNU Tools                      GCC(1)
  599.  
  600.  
  601.  
  602.           types such as iiiinnnntttt are signed types.
  603.  
  604.           However, when you specify `----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll', bitfields are
  605.           all unsigned no matter what.
  606.  
  607.      ----ffffwwwwrrrriiiittttaaaabbbblllleeee----ssssttttrrrriiiinnnnggggssss
  608.           Store string constants in the writable data segment and
  609.           don't  uniquize  them.   This is for compatibility with
  610.           old programs which assume they can  write  into  string
  611.           constants.  `----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll' also has this effect.
  612.  
  613.           Writing into string constants is a very bad idea; "con-
  614.           stants" should be constant.
  615.  
  616. PPPPRRRREEEEPPPPRRRROOOOCCCCEEEESSSSSSSSOOOORRRR OOOOPPPPTTTTIIIIOOOONNNNSSSS
  617.      These options control the C preprocessor, which  is  run  on
  618.      each C source file before actual compilation.
  619.  
  620.      If you use the `----EEEE' option, GCC does nothing except  prepro-
  621.      cessing.   Some  of  these  options make sense only together
  622.      with `----EEEE' because they cause the preprocessor output  to  be
  623.      unsuitable for actual compilation.
  624.  
  625.      ----iiiinnnncccclllluuuuddddeeee _f_i_l_e
  626.           Process _f_i_l_e as input before processing the regular in-
  627.           put file.  In effect, the contents of _f_i_l_e are compiled
  628.           first.  Any `----DDDD' and `----UUUU' options on the  command  line
  629.           are always processed before `----iiiinnnncccclllluuuuddddeeee _f_i_l_e', regardless
  630.           of the order in which they are written.  All the `---- iiiinnnn----
  631.           cccclllluuuuddddeeee' and `----iiiimmmmaaaaccccrrrroooossss' options are processed in the ord-
  632.           er in which they are written.
  633.  
  634.      ----iiiimmmmaaaaccccrrrroooossss _f_i_l_e
  635.           Process _f_i_l_e as input, discarding the resulting output,
  636.           before  processing the regular input file.  Because the
  637.           output generated from _f_i_l_e is discarded, the  only  ef-
  638.           fect  of  `----iiiimmmmaaaaccccrrrroooossss _f_i_l_e' is to make the macros defined
  639.           in _f_i_l_e available for  use  in  the  main  input.   The
  640.           preprocessor evaluates any `----DDDD' and `----UUUU' options on the
  641.           command line before processing `----iiiimmmmaaaaccccrrrroooossss_f_i_l_e',  regard-
  642.           less of the order in which they are written.  All the `
  643.           ----iiiinnnncccclllluuuuddddeeee' and `----iiiimmmmaaaaccccrrrroooossss' options are processed  in  the
  644.           order in which they are written.
  645.  
  646.      ----iiiiddddiiiirrrraaaafffftttteeeerrrr _d_i_r
  647.           Add the directory _d_i_r to the second include path.   The
  648.           directories  on  the  second  include path are searched
  649.           when a header file is not found in any  of  the  direc-
  650.           tories in the main include path (the one that `----IIII' adds
  651.           to).
  652.  
  653.      ----iiiipppprrrreeeeffffiiiixxxx _p_r_e_f_i_x
  654.  
  655.  
  656.  
  657. GNU Tools            Last change: 1993/10/13                   10
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. GCC(1)                      GNU Tools                      GCC(1)
  665.  
  666.  
  667.  
  668.           Specify _p_r_e_f_i_x as the prefix for subsequent `----iiiiwwwwiiiitttthhhhpppprrrreeee----
  669.           ffffiiiixxxx' options.
  670.  
  671.      ----iiiiwwwwiiiitttthhhhpppprrrreeeeffffiiiixxxx _d_i_r
  672.           Add a  directory  to  the  second  include  path.   The
  673.           directory's  name  is  made by concatenating _p_r_e_f_i_x and
  674.           _d_i_r, where _p_r_e_f_i_x was specified previously with `----iiiipppprrrreeee----
  675.           ffffiiiixxxx'.
  676.  
  677.      ----nnnnoooossssttttddddiiiinnnncccc
  678.           Do not  search  the  standard  system  directories  for
  679.           header  files.  Only the directories you have specified
  680.           with `----IIII' options (and the current  directory,  if  ap-
  681.           propriate) are searched.
  682.  
  683.           By using both `----nnnnoooossssttttddddiiiinnnncccc' and `----IIII---- ', you can limit the
  684.           include-file  search file to only those directories you
  685.           specify explicitly.
  686.  
  687.      ----nnnnoooossssttttddddiiiinnnncccc++++++++
  688.           Do not search for header files  in  the  C++ - specific
  689.           standard  directories,  but  do  still search the other
  690.           standard directories.  (This option is used when build-
  691.           ing `lllliiiibbbbgggg++++++++'.)
  692.  
  693.      ----uuuunnnnddddeeeeffff
  694.           Do not predefine any  nonstandard  macros.   (Including
  695.           architecture flags).
  696.  
  697.      ----EEEE    Run only the C preprocessor.   Preprocess  all  the  C
  698.           source  files specified and output the results to stan-
  699.           dard output or to the specified output file.
  700.  
  701.      ----CCCC    Tell the preprocessor not to discard  comments.   Used
  702.           with the `----EEEE' option.
  703.  
  704.      ----PPPP    Tell the preprocessor not  to  generate  `####lllliiiinnnneeee'  com-
  705.           mands.  Used with the `----EEEE' option.
  706.  
  707.      ----MMMM  [[[[ ----MMMMGGGG ]]]]
  708.           Tell the preprocessor to output  a  rule  suitable  for
  709.           mmmmaaaakkkkeeee  describing  the dependencies of each object file.
  710.           For each source  file,  the  preprocessor  outputs  one
  711.           mmmmaaaakkkkeeee-rule whose target is the object file name for that
  712.           source file and whose dependencies are  all  the  files
  713.           `####iiiinnnncccclllluuuuddddeeee'd  in  it.  This rule may be a single line or
  714.           may be continued with `\\\\'-newline if it is  long.   The
  715.           list  of rules is printed on standard output instead of
  716.           the preprocessed C program.
  717.  
  718.           `----MMMM' implies `----EEEE'.
  719.  
  720.  
  721.  
  722.  
  723. GNU Tools            Last change: 1993/10/13                   11
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. GCC(1)                      GNU Tools                      GCC(1)
  731.  
  732.  
  733.  
  734.           `----MMMMGGGG' says to treat missing header files  as  generated
  735.           files and assume they live in the same directory as the
  736.           source file.  It must be specified in addition to `----MMMM'.
  737.  
  738.      ----MMMMMMMM  [[[[ ----MMMMGGGG ]]]]
  739.           Like `----MMMM' but the output mentions only the user  header
  740.           files  included  with  `####iiiinnnncccclllluuuuddddeeee _f_i_l_e"'.  System header
  741.           files included with `####iiiinnnncccclllluuuuddddeeee <<<<_f_i_l_e>' are omitted.
  742.  
  743.      ----MMMMDDDD   Like `----MMMM' but the dependency information is written to
  744.           files  with  names  made by replacing `....oooo' with `....dddd' at
  745.           the end of the output file names.  This is in  addition
  746.           to compiling the file as specified-`----MMMMDDDD' does not inhi-
  747.           bit ordinary compilation the way `----MMMM' does.
  748.  
  749.           The Mach utility `mmmmdddd' can be used  to  merge  the  `....dddd'
  750.           files  into a single dependency file suitable for using
  751.           with the `mmmmaaaakkkkeeee' command.
  752.  
  753.      ----MMMMMMMMDDDD  Like `----MMMMDDDD' except mention only user header files,  not
  754.           system header files.
  755.  
  756.      ----HHHH    Print the name of each header file used,  in  addition
  757.           to other normal activities.
  758.  
  759.      ----AAAA_q_u_e_s_t_i_o_n((((_a_n_s_w_e_r))))
  760.           Assert the answer _a_n_s_w_e_r for _q_u_e_s_t_i_o_n, in  case  it  is
  761.           tested  with  a  preprocessor  conditional such as `####iiiiffff
  762.           ####_q_u_e_s_t_i_o_n((((_a_n_s_w_e_r))))'.  `----AAAA ----   '  disables  the  standard
  763.           assertions that normally describe the target machine.
  764.  
  765.      ----AAAA_q_u_e_s_t_i_o_n
  766.           (_a_n_s_w_e_r) Assert the answer _a_n_s_w_e_r for _q_u_e_s_t_i_o_n, in case
  767.           it  is  tested  with a preprocessor conditional such as
  768.           `####iiiiffff #_q_u_e_s_t_i_o_n(_a_n_s_w_e_r)'.  `----AAAA----' disables  the  standard
  769.           assertions that normally describe the target machine.
  770.  
  771.      ----DDDD_m_a_c_r_o
  772.           Define macro _m_a_c_r_o with the string `1111' as  its  defini-
  773.           tion.
  774.  
  775.      ----DDDD_m_a_c_r_o====_d_e_f_n
  776.           Define macro _m_a_c_r_o as _d_e_f_n.    All instances of `----DDDD' on
  777.           the command line are processed before any `----UUUU' options.
  778.  
  779.      ----UUUU_m_a_c_r_o
  780.           Undefine macro _m_a_c_r_o.  `----UUUU' options are evaluated after
  781.           all `----DDDD' options, but before any `----iiiinnnncccclllluuuuddddeeee' and `----iiiimmmmaaaacccc----
  782.           rrrroooossss' options.
  783.  
  784.      ----ddddMMMM   Tell the preprocessor to output only  a  list  of  the
  785.           macro  definitions  that  are  in  effect at the end of
  786.  
  787.  
  788.  
  789. GNU Tools            Last change: 1993/10/13                   12
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796. GCC(1)                      GNU Tools                      GCC(1)
  797.  
  798.  
  799.  
  800.           preprocessing.  Used with the `----EEEE' option.
  801.  
  802.      ----ddddDDDD   Tell the preprocessor to pass  all  macro  definitions
  803.           into  the  output, in their proper sequence in the rest
  804.           of the output.
  805.  
  806.      ----ddddNNNN   Like `----ddddDDDD' except that the macro  arguments  and  con-
  807.           tents  are omitted.  Only `####ddddeeeeffffiiiinnnneeee _n_a_m_e' is included in
  808.           the output.
  809.  
  810. AAAASSSSSSSSEEEEMMMMBBBBLLLLEEEERRRR OOOOPPPPTTTTIIIIOOOONNNN
  811.      ----WWWWaaaa,,,,_o_p_t_i_o_n
  812.           Pass _o_p_t_i_o_n as an option to the assembler.   If  _o_p_t_i_o_n
  813.           contains  commas,  it is split into multiple options at
  814.           the commas.
  815.  
  816. LLLLIIIINNNNKKKKEEEERRRR OOOOPPPPTTTTIIIIOOOONNNNSSSS
  817.      These options come into play when the compiler links  object
  818.      files  into an executable output file.  They are meaningless
  819.      if the compiler is not doing a link step.
  820.  
  821.      _o_b_j_e_c_t-_f_i_l_e-_n_a_m_e
  822.           A file name that does not end in a  special  recognized
  823.           suffix is considered to name an object file or library.
  824.           (Object files are distinguished from libraries  by  the
  825.           linker  according to the file contents.)  If GCC does a
  826.           link step, these object files are used as input to  the
  827.           linker.
  828.  
  829.      ----llll_l_i_b_r_a_r_y
  830.           Use the library named _l_i_b_r_a_r_y when linking.
  831.  
  832.           The linker searches a standard list of directories  for
  833.           the   library,   which   is   actually   a  file  named
  834.           `lllliiiibbbb_l_i_b_r_a_r_y.a'.  The linker then uses this file  as  if
  835.           it had been specified precisely by name.
  836.  
  837.           The directories searched include several standard  sys-
  838.           tem directories plus any that you specify with `----LLLL'.
  839.  
  840.           Normally the files found this way are  library  files -
  841.           archive  files  whose  members  are  object files.  The
  842.           linker handles an archive file by scanning  through  it
  843.           for  members which define symbols that have so far been
  844.           referenced but not defined.   However,  if  the  linker
  845.           finds  an  ordinary  object file rather than a library,
  846.           the object file is linked in the  usual  fashion.   The
  847.           only difference between using an `----llll' option and speci-
  848.           fying a file name is that `----llll' surrounds  _l_i_b_r_a_r_y  with
  849.           `lllliiiibbbb' and `....aaaa' and searches several directories.
  850.  
  851.      ----lllloooobbbbjjjjcccc
  852.  
  853.  
  854.  
  855. GNU Tools            Last change: 1993/10/13                   13
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862. GCC(1)                      GNU Tools                      GCC(1)
  863.  
  864.  
  865.  
  866.           You need this special case of the ----llll option in order to
  867.           link an Objective C program.
  868.  
  869.      ----nnnnoooossssttttaaaarrrrttttffffiiiilllleeeessss
  870.           Do not use the standard system startup files when link-
  871.           ing.  The standard libraries are used normally.
  872.  
  873.      ----nnnnoooossssttttddddlllliiiibbbb
  874.           Don't use the standard  system  libraries  and  startup
  875.           files when linking.  Only the files you specify will be
  876.           passed to the linker.
  877.  
  878.      ----ssssttttaaaattttiiiicccc
  879.           On systems that support dynamic linking, this  prevents
  880.           linking  with  the shared libraries.  On other systems,
  881.           this option has no effect.
  882.  
  883.      ----sssshhhhaaaarrrreeeedddd
  884.           Produce a shared object which can then be  linked  with
  885.           other  objects  to form an executable.  Only a few sys-
  886.           tems support this option.
  887.  
  888.      ----ssssyyyymmmmbbbboooolllliiiicccc
  889.           Bind references  to  global  symbols  when  building  a
  890.           shared  object.   Warn  about any unresolved references
  891.           (unless overridden by the link editor option `---- XXXXlllliiiinnnnkkkkeeeerrrr
  892.           ---- zzzz  ---- XXXXlllliiiinnnnkkkkeeeerrrr ddddeeeeffffssss').  Only a few systems support this
  893.           option.
  894.  
  895.      ----XXXXlllliiiinnnnkkkkeeeerrrr _o_p_t_i_o_n
  896.           Pass _o_p_t_i_o_n as an option to the linker.   You  can  use
  897.           this to supply system-specific linker options which GNU
  898.           CC does not know how to recognize.
  899.  
  900.           If you want to pass an option that takes  an  argument,
  901.           you  must use `----XXXXlllliiiinnnnkkkkeeeerrrr' twice, once for the option and
  902.           once for the argument.  For example, to pass ` ---- aaaasssssssseeeerrrrtttt
  903.           ddddeeeeffffiiiinnnniiiittttiiiioooonnnnssss', you must write `----XXXXlllliiiinnnnkkkkeeeerrrr ----aaaasssssssseeeerrrrtttt ----XXXXlllliiiinnnnkkkkeeeerrrr
  904.           ddddeeeeffffiiiinnnniiiittttiiiioooonnnnssss'.  It does not work to write `----XXXXlllliiiinnnnkkkkeeeerrrr  """" ----
  905.           aaaasssssssseeeerrrrtttt  ddddeeeeffffiiiinnnniiiittttiiiioooonnnnssss""""',  because  this passes the entire
  906.           string as a single argument,  which  is  not  what  the
  907.           linker expects.
  908.  
  909.      ----WWWWllll,,,,_o_p_t_i_o_n
  910.           Pass _o_p_t_i_o_n as an option to the linker.  If _o_p_t_i_o_n con-
  911.           tains  commas, it is split into multiple options at the
  912.           commas.
  913.  
  914.      ----uuuu _s_y_m_b_o_l
  915.           Pretend the symbol _s_y_m_b_o_l is undefined, to force  link-
  916.           ing  of library modules to define it.  You can use `----uuuu'
  917.           multiple times with different symbols to force  loading
  918.  
  919.  
  920.  
  921. GNU Tools            Last change: 1993/10/13                   14
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928. GCC(1)                      GNU Tools                      GCC(1)
  929.  
  930.  
  931.  
  932.           of additional library modules.
  933.  
  934. DDDDIIIIRRRREEEECCCCTTTTOOOORRRRYYYY OOOOPPPPTTTTIIIIOOOONNNNSSSS
  935.      These options  specify  directories  to  search  for  header
  936.      files, for libraries and for parts of the compiler:
  937.  
  938.      ----IIII_d_i_r
  939.           Append  directory  _d_i_r  to  the  list  of   directories
  940.           searched for include files.
  941.  
  942.      ----IIII----    Any directories you specify with `----IIII' options  before
  943.           the  ` ---- IIII ---- ' option are searched only for the case of
  944.           `####iiiinnnncccclllluuuuddddeeee """"_f_i_l_e""""'; they are not searched for  `####iiiinnnncccclllluuuuddddeeee
  945.           <<<<_f_i_l_e>'.
  946.  
  947.           If additional directories are specified with `---- IIII'  op-
  948.           tions  after the `----IIII---- ', these directories are searched
  949.           for all `####iiiinnnncccclllluuuuddddeeee' directives.  (Ordinarily _a_l_l  ` ---- IIII'
  950.           directories are used this way.)
  951.  
  952.           In addition, the `----IIII---- ' option inhibits the use of  the
  953.           current  directory  (where  the current input file came
  954.           from) as  the  first  search  directory  for  `####iiiinnnncccclllluuuuddddeeee
  955.           """"_f_i_l_e""""'.  There is no way to override this effect of `----
  956.           IIII---- '.  With `----IIII....' you can specify searching the  direc-
  957.           tory  which  was current when the compiler was invoked.
  958.           That is not exactly the same as what  the  preprocessor
  959.           does by default, but it is often satisfactory.
  960.  
  961.           `----IIII---- ' does not inhibit the use of the standard  system
  962.           directories for header files.  Thus, `----IIII---- ' and `----nnnnoooosssstttt----
  963.           ddddiiiinnnncccc' are independent.
  964.  
  965.      ----LLLL_d_i_r
  966.           Add directory _d_i_r to the  list  of  directories  to  be
  967.           searched for `----llll'.
  968.  
  969.      ----BBBB_p_r_e_f_i_x
  970.           This option specifies where to  find  the  executables,
  971.           libraries and data files of the compiler itself.
  972.  
  973.           The compiler driver program runs one  or  more  of  the
  974.           subprograms `ccccpppppppp', `cccccccc1111' (or, for C++, `cccccccc1111pppplllluuuussss'), `aaaassss'
  975.           and `lllldddd'.  It tries _p_r_e_f_i_x as a prefix for each program
  976.           it    tries    to    run,   both   with   and   without
  977.           `_m_a_c_h_i_n_e////_v_e_r_s_i_o_n////'.
  978.  
  979.           For each subprogram to  be  run,  the  compiler  driver
  980.           first  tries  the `----BBBB' prefix, if any.  If that name is
  981.           not found, or if `----BBBB' was  not  specified,  the  driver
  982.           tries  two standard prefixes, which are `////uuuussssrrrr////lllliiiibbbb////ggggcccccccc////'
  983.           and `////uuuussssrrrr////llllooooccccaaaallll////lllliiiibbbb////ggggcccccccc----lllliiiibbbb////'.   If  neither  of  those
  984.  
  985.  
  986.  
  987. GNU Tools            Last change: 1993/10/13                   15
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994. GCC(1)                      GNU Tools                      GCC(1)
  995.  
  996.  
  997.  
  998.           results  in  a  file  name  that is found, the compiler
  999.           driver searches for the unmodified program name,  using
  1000.           the  directories  specified  in your `PPPPAAAATTTTHHHH' environment
  1001.           variable.
  1002.  
  1003.           The run-time support file `lllliiiibbbbggggcccccccc....aaaa' is  also  searched
  1004.           for  using  the  ` ----BBBB' prefix, if needed.  If it is not
  1005.           found there, the two standard prefixes above are tried,
  1006.           and  that  is all.  The file is left out of the link if
  1007.           it is not found by those means.  Most of the  time,  on
  1008.           most machines, `lllliiiibbbbggggcccccccc....aaaa' is not actually necessary.
  1009.  
  1010.           You can get a similar result from the environment vari-
  1011.           able  GGGGCCCCCCCC____EEEEXXXXEEEECCCC____PPPPRRRREEEEFFFFIIIIXXXX;  if  it is defined, its value is
  1012.           used as a prefix in the same way.  If both the `----BBBB' op-
  1013.           tion  and the GGGGCCCCCCCC____EEEEXXXXEEEECCCC____PPPPRRRREEEEFFFFIIIIXXXX variable are present, the
  1014.           `----BBBB' option is used first and the environment  variable
  1015.           value second.
  1016.  
  1017. WWWWAAAARRRRNNNNIIIINNNNGGGG OOOOPPPPTTTTIIIIOOOONNNNSSSS
  1018.      Warnings are diagnostic messages that  report  constructions
  1019.      which  are  not  inherently erroneous but which are risky or
  1020.      suggest there may have been an error.
  1021.  
  1022.      These options control the amount and kinds of warnings  pro-
  1023.      duced by GNU CC:
  1024.  
  1025.      ----ffffssssyyyynnnnttttaaaaxxxx----oooonnnnllllyyyy
  1026.           Check the code for syntax errors, but  don't  emit  any
  1027.           output.
  1028.  
  1029.      ----wwww    Inhibit all warning messages.
  1030.  
  1031.      ----WWWWnnnnoooo----iiiimmmmppppoooorrrrtttt
  1032.           Inhibit warning messages about the use of ####iiiimmmmppppoooorrrrtttt.
  1033.  
  1034.      ----ppppeeeeddddaaaannnnttttiiiicccc
  1035.           Issue all the warnings demanded by strict ANSI standard
  1036.           C; reject all programs that use forbidden extensions.
  1037.  
  1038.           Valid ANSI standard C programs should compile  properly
  1039.           with or without this option (though a rare few will re-
  1040.           quire `----aaaannnnssssiiii').  However, without this option,  certain
  1041.           GNU extensions and traditional C features are supported
  1042.           as well.  With this option, they are  rejected.   There
  1043.           is  no  reason  to  _u_s_e  this option; it exists only to
  1044.           satisfy pedants.
  1045.  
  1046.           `----ppppeeeeddddaaaannnnttttiiiicccc' does not cause warning messages for use  of
  1047.           the  alternate  keywords whose names begin and end with
  1048.           `________'.  Pedantic warnings are also disabled in  the  ex-
  1049.           pression  that  follows  ________eeeexxxxtttteeeennnnssssiiiioooonnnn________.   However, only
  1050.  
  1051.  
  1052.  
  1053. GNU Tools            Last change: 1993/10/13                   16
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. GCC(1)                      GNU Tools                      GCC(1)
  1061.  
  1062.  
  1063.  
  1064.           system header files should use these escape routes; ap-
  1065.           plication programs should avoid them.
  1066.  
  1067.      ----ppppeeeeddddaaaannnnttttiiiicccc----eeeerrrrrrrroooorrrrssss
  1068.           Like `----ppppeeeeddddaaaannnnttttiiiicccc', except that errors are produced rath-
  1069.           er than warnings.
  1070.  
  1071.      ----WWWW    Print extra warning messages for these events:
  1072.  
  1073.         +o  A nonvolatile automatic variable might be changed by a
  1074.           call  to  lllloooonnnnggggjjjjmmmmpppp.  These warnings are possible only in
  1075.           optimizing compilation.
  1076.  
  1077.           The compiler sees only the calls to sssseeeettttjjjjmmmmpppp.  It  cannot
  1078.           know  where  lllloooonnnnggggjjjjmmmmpppp  will be called; in fact, a signal
  1079.           handler could call it at any point in the code.   As  a
  1080.           result,  you  may  get  a warning even when there is in
  1081.           fact no problem  because  lllloooonnnnggggjjjjmmmmpppp  cannot  in  fact  be
  1082.           called at the place which would cause a problem.
  1083.  
  1084.         +o  A function can return either with or without a  value.
  1085.           (Falling off the end of the function body is considered
  1086.           returning without a value.)  For example, this function
  1087.           would evoke such a warning:
  1088.  
  1089.           foo (a)
  1090.           {
  1091.             if (a > 0)
  1092.               return a;
  1093.           }
  1094.  
  1095.           Spurious warnings can occur because  GNU  CC  does  not
  1096.           realize  that  certain  functions  (including aaaabbbboooorrrrtttt and
  1097.           lllloooonnnnggggjjjjmmmmpppp) will never return.
  1098.  
  1099.         +o  An expression-statement contains no side effects.
  1100.  
  1101.         +o  An unsigned value is compared against zero with `>>>>' or
  1102.           `<<<<===='.
  1103.  
  1104.      ----WWWWiiiimmmmpppplllliiiicccciiiitttt
  1105.           Warn whenever a function or parameter is implicitly de-
  1106.           clared.
  1107.  
  1108.      ----WWWWrrrreeeettttuuuurrrrnnnn----ttttyyyyppppeeee
  1109.           Warn whenever a function is defined with a  return-type
  1110.           that  defaults  to  iiiinnnntttt.   Also  warn  about any rrrreeeettttuuuurrrrnnnn
  1111.           statement with no  return-value  in  a  function  whose
  1112.           return-type is not vvvvooooiiiidddd.
  1113.  
  1114.      ----WWWWuuuunnnnuuuusssseeeedddd
  1115.           Warn whenever a local variable is unused aside from its
  1116.  
  1117.  
  1118.  
  1119. GNU Tools            Last change: 1993/10/13                   17
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126. GCC(1)                      GNU Tools                      GCC(1)
  1127.  
  1128.  
  1129.  
  1130.           declaration, whenever a function is declared static but
  1131.           never defined, and  whenever  a  statement  computes  a
  1132.           result that is explicitly not used.
  1133.  
  1134.      ----WWWWsssswwwwiiiittttcccchhhh
  1135.           Warn whenever  a  sssswwwwiiiittttcccchhhh  statement  has  an  index  of
  1136.           enumeral  type  and lacks a ccccaaaasssseeee for one or more of the
  1137.           named codes of that enumeration.  (The  presence  of  a
  1138.           ddddeeeeffffaaaauuuulllltttt label prevents this warning.)  ccccaaaasssseeee labels out-
  1139.           side the enumeration range also provoke  warnings  when
  1140.           this option is used.
  1141.  
  1142.      ----WWWWccccoooommmmmmmmeeeennnntttt
  1143.           Warn whenever a comment-start sequence `////**** ' appears in
  1144.           a comment.
  1145.  
  1146.      ----WWWWttttrrrriiiiggggrrrraaaapppphhhhssss
  1147.           Warn if any trigraphs are  encountered  (assuming  they
  1148.           are enabled).
  1149.  
  1150.      ----WWWWffffoooorrrrmmmmaaaatttt
  1151.           Check calls to pppprrrriiiinnnnttttffff and ssssccccaaaannnnffff,  etc.,  to  make  sure
  1152.           that  the  arguments supplied have types appropriate to
  1153.           the format string specified.
  1154.  
  1155.      ----WWWWcccchhhhaaaarrrr----ssssuuuubbbbssssccccrrrriiiippppttttssss
  1156.           Warn if an array subscript has type cccchhhhaaaarrrr.   This  is  a
  1157.           common cause of error, as programmers often forget that
  1158.           this type is signed on some machines.
  1159.  
  1160.      ----WWWWuuuunnnniiiinnnniiiittttiiiiaaaalllliiiizzzzeeeedddd
  1161.           An automatic variable is used without first being  ini-
  1162.           tialized.
  1163.  
  1164.           These warnings are possible only in optimizing compila-
  1165.           tion,  because  they require data flow information that
  1166.           is computed only when optimizing.  If you don't specify
  1167.           `----OOOO', you simply won't get these warnings.
  1168.  
  1169.           These warnings occur only for variables that are candi-
  1170.           dates  for register allocation.  Therefore, they do not
  1171.           occur for a variable  that  is  declared  vvvvoooollllaaaattttiiiilllleeee,  or
  1172.           whose  address is taken, or whose size is other than 1,
  1173.           2, 4 or 8 bytes.  Also, they do not  occur  for  struc-
  1174.           tures,  unions  or arrays, even when they are in regis-
  1175.           ters.
  1176.  
  1177.           Note that there may be no warning about a variable that
  1178.           is  used  only  to compute a value that itself is never
  1179.           used, because such computations may be deleted by  data
  1180.           flow analysis before the warnings are printed.
  1181.  
  1182.  
  1183.  
  1184.  
  1185. GNU Tools            Last change: 1993/10/13                   18
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192. GCC(1)                      GNU Tools                      GCC(1)
  1193.  
  1194.  
  1195.  
  1196.           These warnings are made optional because GNU CC is  not
  1197.           smart  enough to see all the reasons why the code might
  1198.           be correct despite appearing to have an error.  Here is
  1199.           one example of how this can happen:
  1200.  
  1201.           {
  1202.             int x;
  1203.             switch (y)
  1204.               {
  1205.               case 1: x = 1;
  1206.                 break;
  1207.               case 2: x = 4;
  1208.                 break;
  1209.               case 3: x = 5;
  1210.               }
  1211.             foo (x);
  1212.           }
  1213.  
  1214.           If the value of yyyy is always 1, 2 or 3, then xxxx is always
  1215.           initialized,  but  GNU  CC  doesn't know this.  Here is
  1216.           another common case:
  1217.  
  1218.           {
  1219.             int save_y;
  1220.             if (change_y) save_y = y, y = new_y;
  1221.             ...
  1222.             if (change_y) y = save_y;
  1223.           }
  1224.  
  1225.           This has no bug because ssssaaaavvvveeee____yyyy is used only  if  it  is
  1226.           set.
  1227.  
  1228.           Some spurious warnings can be avoided if you declare as
  1229.           vvvvoooollllaaaattttiiiilllleeee all the functions you use that never return.
  1230.  
  1231.      ----WWWWppppaaaarrrreeeennnntttthhhheeeesssseeeessss
  1232.           Warn if parentheses are omitted in certain contexts.
  1233.  
  1234.      ----WWWWtttteeeemmmmppppllllaaaatttteeee----ddddeeeebbbbuuuuggggggggiiiinnnngggg
  1235.           When using templates in a C++ program, warn  if  debug-
  1236.           ging is not yet fully available (C++ only).
  1237.  
  1238.      ----WWWWaaaallllllll
  1239.           All of the above `----WWWW' options combined.  These are  all
  1240.           the  options  which  pertain to usage that we recommend
  1241.           avoiding and that we believe is easy to avoid, even  in
  1242.           conjunction with macros.
  1243.  
  1244.      The remaining `----WWWW............' options are not implied by `----WWWWaaaallllllll' be-
  1245.      cause they warn about constructions that we consider reason-
  1246.      able to use, on occasion, in clean programs.
  1247.  
  1248.  
  1249.  
  1250.  
  1251. GNU Tools            Last change: 1993/10/13                   19
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258. GCC(1)                      GNU Tools                      GCC(1)
  1259.  
  1260.  
  1261.  
  1262.      ----WWWWttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll
  1263.           Warn about certain constructs that  behave  differently
  1264.           in traditional and ANSI C.
  1265.  
  1266.         +o  Macro arguments occurring within string  constants  in
  1267.           the macro body.  These would substitute the argument in
  1268.           traditional C, but are part of the constant in ANSI C.
  1269.  
  1270.         +o  A function declared external in  one  block  and  then
  1271.           used after the end of the block.
  1272.  
  1273.         +o  A sssswwwwiiiittttcccchhhh statement has an operand of type lllloooonnnngggg.
  1274.  
  1275.      ----WWWWsssshhhhaaaaddddoooowwww
  1276.           Warn whenever a local variable  shadows  another  local
  1277.           variable.
  1278.  
  1279.      ----WWWWiiiidddd----ccccllllaaaasssshhhh----_l_e_n
  1280.           Warn whenever two distinct  identifiers  match  in  the
  1281.           first _l_e_n characters.  This may help you prepare a pro-
  1282.           gram that will compile with  certain  obsolete,  brain-
  1283.           damaged compilers.
  1284.  
  1285.      ----WWWWppppooooiiiinnnntttteeeerrrr----aaaarrrriiiitttthhhh
  1286.           Warn about anything that depends on  the  "size  of"  a
  1287.           function  type or of vvvvooooiiiidddd.  GNU C assigns these types a
  1288.           size of 1, for convenience in calculations with vvvvooooiiiidddd ****
  1289.           pointers and pointers to functions.
  1290.  
  1291.      ----WWWWccccaaaasssstttt----qqqquuuuaaaallll
  1292.           Warn whenever a pointer is cast so as to remove a  type
  1293.           qualifier from the target type.  For example, warn if a
  1294.           ccccoooonnnnsssstttt cccchhhhaaaarrrr ****  is cast to an ordinary cccchhhhaaaarrrr **** .
  1295.  
  1296.      ----WWWWccccaaaasssstttt----aaaalllliiiiggggnnnn
  1297.           Warn whenever a pointer is cast such that the  required
  1298.           alignment  of  the  target  is increased.  For example,
  1299.           warn if a cccchhhhaaaarrrr ****  is cast to an iiiinnnntttt  ****     on  machines
  1300.           where  integers  can  only be accessed at two- or four-
  1301.           byte boundaries.
  1302.  
  1303.      ----WWWWwwwwrrrriiiitttteeee----ssssttttrrrriiiinnnnggggssss
  1304.           Give string constants the type  ccccoooonnnnsssstttt  cccchhhhaaaarrrr[[[[_l_e_n_g_t_h]]]]  so
  1305.           that copying the address of one into a non-ccccoooonnnnsssstttt cccchhhhaaaarrrr ****
  1306.           pointer will get a warning.  These warnings  will  help
  1307.           you  find  at  compile  time code that can try to write
  1308.           into a string constant, but only if you have been  very
  1309.           careful  about  using  ccccoooonnnnsssstttt in declarations and proto-
  1310.           types.  Otherwise, it will just be a nuisance; this  is
  1311.           why we did not make `----WWWWaaaallllllll' request these warnings.
  1312.  
  1313.      ----WWWWccccoooonnnnvvvveeeerrrrssssiiiioooonnnn
  1314.  
  1315.  
  1316.  
  1317. GNU Tools            Last change: 1993/10/13                   20
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. GCC(1)                      GNU Tools                      GCC(1)
  1325.  
  1326.  
  1327.  
  1328.           Warn if a prototype causes a type  conversion  that  is
  1329.           different  from  what would happen to the same argument
  1330.           in the absence of a prototype.  This  includes  conver-
  1331.           sions  of  fixed  point to floating and vice versa, and
  1332.           conversions changing the width or signedness of a fixed
  1333.           point argument except when the same as the default pro-
  1334.           motion.
  1335.  
  1336.      ----WWWWaaaaggggggggrrrreeeeggggaaaatttteeee----rrrreeeettttuuuurrrrnnnn
  1337.           Warn if any functions that return structures or  unions
  1338.           are defined or called.  (In languages where you can re-
  1339.           turn an array, this also elicits a warning.)
  1340.  
  1341.      ----WWWWssssttttrrrriiiicccctttt----pppprrrroooottttoooottttyyyyppppeeeessss
  1342.           Warn if a  function  is  declared  or  defined  without
  1343.           specifying  the argument types.  (An old-style function
  1344.           definition is permitted without a warning  if  preceded
  1345.           by a declaration which specifies the argument types.)
  1346.  
  1347.      ----WWWWmmmmiiiissssssssiiiinnnngggg----pppprrrroooottttoooottttyyyyppppeeeessss
  1348.           Warn if a global function is defined without a previous
  1349.           prototype  declaration.  This warning is issued even if
  1350.           the definition itself provides a prototype.  The aim is
  1351.           to  detect global functions that fail to be declared in
  1352.           header files.
  1353.  
  1354.      ----WWWWmmmmiiiissssssssiiiinnnngggg----ddddeeeeccccllllaaaarrrraaaattttiiiioooonnnnssss
  1355.           Warn if a global function is defined without a previous
  1356.           declaration.   Do so even if the definition itself pro-
  1357.           vides a prototype.  Use this option  to  detect  global
  1358.           functions that are not declared in header files.
  1359.  
  1360.      ----WWWWrrrreeeedddduuuunnnnddddaaaannnntttt----ddddeeeeccccllllssss
  1361.           Warn if anything is declared more than once in the same
  1362.           scope,  even  in  cases  where  multiple declaration is
  1363.           valid and changes nothing.
  1364.  
  1365.      ----WWWWnnnneeeesssstttteeeedddd----eeeexxxxtttteeeerrrrnnnnssss
  1366.           Warn if an eeeexxxxtttteeeerrrrnnnn declaration is encountered within  an
  1367.           function.
  1368.  
  1369.      ----WWWWeeeennnnuuuummmm----ccccllllaaaasssshhhh
  1370.           Warn about  conversion  between  different  enumeration
  1371.           types (C++ only).
  1372.  
  1373.      ----WWWWoooovvvveeeerrrrllllooooaaaaddddeeeedddd----vvvviiiirrrrttttuuuuaaaallll
  1374.           (C++ only.)  In a derived  class,  the  definitions  of
  1375.           virtual  functions  must  match the type signature of a
  1376.           virtual function declared in the base class.  Use  this
  1377.           option  to  request  warnings  when a derived class de-
  1378.           clares a function that may be an erroneous  attempt  to
  1379.           define  a  virtual function: that is, warn when a func-
  1380.  
  1381.  
  1382.  
  1383. GNU Tools            Last change: 1993/10/13                   21
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390. GCC(1)                      GNU Tools                      GCC(1)
  1391.  
  1392.  
  1393.  
  1394.           tion with the same name as a virtual  function  in  the
  1395.           base  class,  but  with  a  type signature that doesn't
  1396.           match any virtual functions from the base class.
  1397.  
  1398.      ----WWWWiiiinnnnlllliiiinnnneeee
  1399.           Warn if a function can not be inlined,  and  either  it
  1400.           was  declared as inline, or else the ----ffffiiiinnnnlllliiiinnnneeee----ffffuuuunnnnccccttttiiiioooonnnnssss
  1401.           option was given.
  1402.  
  1403.      ----WWWWeeeerrrrrrrroooorrrr
  1404.           Treat warnings as errors; abort compilation  after  any
  1405.           warning.
  1406.  
  1407. DDDDEEEEBBBBUUUUGGGGGGGGIIIINNNNGGGG OOOOPPPPTTTTIIIIOOOONNNNSSSS
  1408.      GNU CC has various special options that are used for  debug-
  1409.      ging either your program or GCC:
  1410.  
  1411.       ---- gggg    Produce  debugging  information  in  the   operating
  1412.           system's  native format (stabs, COFF, XCOFF, or DWARF).
  1413.           GDB can work with this debugging information.
  1414.  
  1415.           On most systems that use stabs format, `----gggg' enables use
  1416.           of  extra  debugging information that only GDB can use;
  1417.           this extra information makes debugging work  better  in
  1418.           GDB but will probably make other debuggers crash or re-
  1419.           fuse to read the program.  If you want to  control  for
  1420.           certain  whether to generate the extra information, use
  1421.           `----ggggssssttttaaaabbbbssss++++', `----ggggssssttttaaaabbbbssss', ` ---- ggggxxxxccccooooffffffff++++',  ` ---- ggggxxxxccccooooffffffff',  ` ----
  1422.           ggggddddwwwwaaaarrrrffff++++', or `----ggggddddwwwwaaaarrrrffff' (see below).
  1423.  
  1424.           Unlike most other C compilers, GNU CC allows you to use
  1425.           ` ----gggg' with `----OOOO'.  The shortcuts taken by optimized code
  1426.           may occasionally produce surprising results: some vari-
  1427.           ables  you  declared may not exist at all; flow of con-
  1428.           trol may briefly move where you did not expect it; some
  1429.           statements  may  not  be  executed because they compute
  1430.           constant results or their values were already at  hand;
  1431.           some statements may execute in different places because
  1432.           they were moved out of loops.
  1433.  
  1434.           Nevertheless it proves possible to debug optimized out-
  1435.           put.  This makes it reasonable to use the optimizer for
  1436.           programs that might have bugs.
  1437.  
  1438.      The following options are useful when GNU  CC  is  generated
  1439.      with the capability for more than one debugging format.
  1440.  
  1441.      ----ggggggggddddbbbb
  1442.           Produce debugging information in the native format  (if
  1443.           that  is supported), including GDB extensions if at all
  1444.           possible.
  1445.  
  1446.  
  1447.  
  1448.  
  1449. GNU Tools            Last change: 1993/10/13                   22
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456. GCC(1)                      GNU Tools                      GCC(1)
  1457.  
  1458.  
  1459.  
  1460.      ----ggggssssttttaaaabbbbssss
  1461.           Produce debugging information in stabs format (if  that
  1462.           is  supported),  without  GDB  extensions.  This is the
  1463.           format used by DBX on most BSD systems.
  1464.  
  1465.      ----ggggssssttttaaaabbbbssss++++
  1466.           Produce debugging information in stabs format (if  that
  1467.           is  supported), using GNU extensions understood only by
  1468.           the GNU debugger (GDB).  The use of these extensions is
  1469.           likely  to make other debuggers crash or refuse to read
  1470.           the program.
  1471.  
  1472.      ----ggggccccooooffffffff
  1473.           Produce debugging information in COFF format  (if  that
  1474.           is  supported).  This is the format used by SDB on most
  1475.           System V systems prior to System V Release 4.
  1476.  
  1477.      ----ggggxxxxccccooooffffffff
  1478.           Produce debugging information in XCOFF format (if  that
  1479.           is  supported).  This is the format used by the DBX de-
  1480.           bugger on IBM RS/6000 systems.
  1481.  
  1482.      ----ggggxxxxccccooooffffffff++++
  1483.           Produce debugging information in XCOFF format (if  that
  1484.           is  supported), using GNU extensions understood only by
  1485.           the GNU debugger (GDB).  The use of these extensions is
  1486.           likely  to make other debuggers crash or refuse to read
  1487.           the program.
  1488.  
  1489.      ----ggggddddwwwwaaaarrrrffff
  1490.           Produce debugging information in DWARF format (if  that
  1491.           is  supported).  This is the format used by SDB on most
  1492.           System V Release 4 systems.
  1493.  
  1494.      ----ggggddddwwwwaaaarrrrffff++++
  1495.           Produce debugging information in DWARF format (if  that
  1496.           is  supported), using GNU extensions understood only by
  1497.           the GNU debugger (GDB).  The use of these extensions is
  1498.           likely  to make other debuggers crash or refuse to read
  1499.           the program.
  1500.  
  1501.      ----gggg_l_e_v_e_l
  1502.      ----ggggggggddddbbbb_l_e_v_e_l
  1503.      ----ggggssssttttaaaabbbbssss_l_e_v_e_l
  1504.      ----ggggccccooooffffffff_l_e_v_e_l ----ggggxxxxccccooooffffffff_l_e_v_e_l
  1505.  
  1506.      ----ggggddddwwwwaaaarrrrffff_l_e_v_e_l
  1507.           Request debugging information and  also  use  _l_e_v_e_l  to
  1508.           specify how much information.  The default level is 2.
  1509.  
  1510.           Level 1 produces minimal information, enough for making
  1511.           backtraces  in parts of the program that you don't plan
  1512.  
  1513.  
  1514.  
  1515. GNU Tools            Last change: 1993/10/13                   23
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522. GCC(1)                      GNU Tools                      GCC(1)
  1523.  
  1524.  
  1525.  
  1526.           to debug.  This includes descriptions of functions  and
  1527.           external  variables,  but  no  information  about local
  1528.           variables and no line numbers.
  1529.  
  1530.           Level 3 includes extra information,  such  as  all  the
  1531.           macro  definitions  present  in  the program.  Some de-
  1532.           buggers support macro expansion when you use `----gggg3333'.
  1533.  
  1534.      ----pppp    Generate extra code to write profile information suit-
  1535.           able for the analysis program pppprrrrooooffff.
  1536.  
  1537.      ----ppppgggg   Generate extra code to write profile information suit-
  1538.           able for the analysis program ggggpppprrrrooooffff.
  1539.  
  1540.      ----aaaa    Generate extra code to write profile  information  for
  1541.           basic  blocks,  which  will  record the number of times
  1542.           each basic block  is  executed.   This  data  could  be
  1543.           analyzed  by  a program like ttttccccoooovvvv.  Note, however, that
  1544.           the format of the data is not what ttttccccoooovvvv expects.  Even-
  1545.           tually  GNU  ggggpppprrrrooooffff  should  be extended to process this
  1546.           data.
  1547.  
  1548.      ----dddd_l_e_t_t_e_r_s
  1549.           Says to make  debugging  dumps  during  compilation  at
  1550.           times specified by _l_e_t_t_e_r_s.  This is used for debugging
  1551.           the compiler.  The file names for most of the dumps are
  1552.           made  by appending a word to the source file name (e.g.
  1553.           `ffffoooooooo....cccc....rrrrttttllll' or `ffffoooooooo....cccc....jjjjuuuummmmpppp').
  1554.  
  1555.      ----ddddMMMM   Dump all macro definitions, at the end of  preprocess-
  1556.           ing, and write no output.
  1557.  
  1558.      ----ddddNNNN   Dump all macro names, at the end of preprocessing.
  1559.  
  1560.      ----ddddDDDD   Dump all macro definitions, at the end of  preprocess-
  1561.           ing, in addition to normal output.
  1562.  
  1563.      ----ddddyyyy   Dump debugging information during parsing, to standard
  1564.           error.
  1565.  
  1566.      ----ddddrrrr   Dump after RTL generation, to `_f_i_l_e....rrrrttttllll'.
  1567.  
  1568.      ----ddddxxxx   Just generate RTL for a function instead of  compiling
  1569.           it.  Usually used with `rrrr'.
  1570.  
  1571.      ----ddddjjjj   Dump after first jump optimization, to `_f_i_l_e....jjjjuuuummmmpppp'.
  1572.  
  1573.      ----ddddssss   Dump after CSE (including the jump  optimization  that
  1574.           sometimes follows CSE), to `_f_i_l_e....ccccsssseeee'.
  1575.  
  1576.      ----ddddLLLL   Dump after loop optimization, to `_f_i_l_e....lllloooooooopppp'.
  1577.  
  1578.  
  1579.  
  1580.  
  1581. GNU Tools            Last change: 1993/10/13                   24
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588. GCC(1)                      GNU Tools                      GCC(1)
  1589.  
  1590.  
  1591.  
  1592.      ----ddddtttt   Dump after the second CSE pass (including the jump op-
  1593.           timization that sometimes follows CSE), to `_f_i_l_e....ccccsssseeee2222'.
  1594.  
  1595.      ----ddddffff   Dump after flow analysis, to `_f_i_l_e....fffflllloooowwww'.
  1596.  
  1597.      ----ddddcccc   Dump after instruction combination, to `_f_i_l_e....ccccoooommmmbbbbiiiinnnneeee'.
  1598.  
  1599.      ----ddddSSSS   Dump after the first instruction scheduling  pass,  to
  1600.           `_f_i_l_e....sssscccchhhheeeedddd'.
  1601.  
  1602.      ----ddddllll   Dump after local register allocation, to `_f_i_l_e....llllrrrreeeegggg'.
  1603.  
  1604.      ----ddddgggg   Dump after global register allocation, to `_f_i_l_e....ggggrrrreeeegggg'.
  1605.  
  1606.      ----ddddRRRR   Dump after the second instruction scheduling pass,  to
  1607.           `_f_i_l_e....sssscccchhhheeeedddd2222'.
  1608.  
  1609.      ----ddddJJJJ   Dump after last jump optimization, to `_f_i_l_e....jjjjuuuummmmpppp2222'.
  1610.  
  1611.      ----dddddddd   Dump after delayed branch scheduling, to `_f_i_l_e....ddddbbbbrrrr'.
  1612.  
  1613.      ----ddddkkkk   Dump after conversion  from  registers  to  stack,  to
  1614.           `_f_i_l_e....ssssttttaaaacccckkkk'.
  1615.  
  1616.      ----ddddaaaa   Produce all the dumps listed above.
  1617.  
  1618.      ----ddddmmmm   Print statistics on memory usage, at the  end  of  the
  1619.           run, to standard error.
  1620.  
  1621.      ----ddddpppp   Annotate the assembler output with a comment  indicat-
  1622.           ing which pattern and alternative was used.
  1623.  
  1624.      ----ffffpppprrrreeeetttteeeennnndddd----ffffllllooooaaaatttt
  1625.           When running a cross-compiler, pretend that the  target
  1626.           machine uses the same floating point format as the host
  1627.           machine.  This causes incorrect output  of  the  actual
  1628.           floating constants, but the actual instruction sequence
  1629.           will probably be the same as GNU  CC  would  make  when
  1630.           running on the target machine.
  1631.  
  1632.      ----ssssaaaavvvveeee----tttteeeemmmmppppssss
  1633.           Store the usual  "temporary"  intermediate  files  per-
  1634.           manently;  place them in the current directory and name
  1635.           them based on the source file.  Thus, compiling `ffffoooooooo....cccc'
  1636.           with `----cccc ----ssssaaaavvvveeee----tttteeeemmmmppppssss' would produce files `ffffoooooooo....ccccpppppppp' and
  1637.           `ffffoooooooo....ssss', as well as `ffffoooooooo....oooo'.
  1638.  
  1639.      ----pppprrrriiiinnnntttt----ffffiiiilllleeee----nnnnaaaammmmeeee====_l_i_b_r_a_r_y
  1640.           Print the  full  absolute  name  of  the  library  file
  1641.           _l_i_b_r_a_r_y   that would be used when linking-and do not do
  1642.           anything else.  With this option, GNU CC does not  com-
  1643.           pile or link anything; it just prints the file name.
  1644.  
  1645.  
  1646.  
  1647. GNU Tools            Last change: 1993/10/13                   25
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654. GCC(1)                      GNU Tools                      GCC(1)
  1655.  
  1656.  
  1657.  
  1658.      ----pppprrrriiiinnnntttt----lllliiiibbbbggggcccccccc----ffffiiiilllleeee----nnnnaaaammmmeeee
  1659.           Same as `----pppprrrriiiinnnntttt----ffffiiiilllleeee----nnnnaaaammmmeeee====lllliiiibbbbggggcccccccc....aaaa'.
  1660.  
  1661.      ----pppprrrriiiinnnntttt----pppprrrroooogggg----nnnnaaaammmmeeee====_p_r_o_g_r_a_m
  1662.           Like `----pppprrrriiiinnnntttt----ffffiiiilllleeee----nnnnaaaammmmeeee', but  searches  for  a  program
  1663.           such as `cpp'.
  1664.  
  1665. OOOOPPPPTTTTIIIIMMMMIIIIZZZZAAAATTTTIIIIOOOONNNN OOOOPPPPTTTTIIIIOOOONNNNSSSS
  1666.      These options control various sorts of optimizations:
  1667.  
  1668.      ----OOOO
  1669.  
  1670.      ----OOOO1111   Optimize.  Optimizing compilation takes somewhat  more
  1671.           time, and a lot more memory for a large function.
  1672.  
  1673.           Without `----OOOO', the compiler's goal is to reduce the cost
  1674.           of  compilation  and  to make debugging produce the ex-
  1675.           pected results.  Statements  are  independent:  if  you
  1676.           stop  the program with a breakpoint between statements,
  1677.           you can then assign a new  value  to  any  variable  or
  1678.           change  the  program  counter to any other statement in
  1679.           the function and get exactly the results you would  ex-
  1680.           pect from the source code.
  1681.  
  1682.           Without `----OOOO', only variables declared rrrreeeeggggiiiisssstttteeeerrrr are  al-
  1683.           located in registers.  The resulting compiled code is a
  1684.           little worse than produced by PCC without `----OOOO'.
  1685.  
  1686.           With `----OOOO', the compiler tries to reduce code  size  and
  1687.           execution time.
  1688.  
  1689.           When you specify `----OOOO', the two options `----fffftttthhhhrrrreeeeaaaadddd----jjjjuuuummmmppppssss'
  1690.           and `----ffffddddeeeeffffeeeerrrr----ppppoooopppp' are turned on.  On machines that have
  1691.           delay slots, the `----ffffddddeeeellllaaaayyyyeeeedddd----bbbbrrrraaaannnncccchhhh'  option  is  turned
  1692.           on.  For those machines that can support debugging even
  1693.           without a frame pointer, the `----ffffoooommmmiiiitttt----ffffrrrraaaammmmeeee----ppppooooiiiinnnntttteeeerrrr' op-
  1694.           tion  is  turned  on.  On some machines other flags may
  1695.           also be turned on.
  1696.  
  1697.      ----OOOO2222   Optimize even more.  Nearly  all  supported  optimiza-
  1698.           tions  that  do  not involve a space-speed tradeoff are
  1699.           performed.  Loop unrolling and  function  inlining  are
  1700.           not  done, for example.  As compared to ----OOOO, this option
  1701.           increases both compilation time and the performance  of
  1702.           the generated code.
  1703.  
  1704.      ----OOOO3333   Optimize yet more. This turns on everything ----OOOO2222  does,
  1705.           along with also turning on ----ffffiiiinnnnlllliiiinnnneeee----ffffuuuunnnnccccttttiiiioooonnnnssss....
  1706.  
  1707.      ----OOOO0000   Do not optimize.
  1708.  
  1709.           If you use multiple ----OOOO options, with or  without  level
  1710.  
  1711.  
  1712.  
  1713. GNU Tools            Last change: 1993/10/13                   26
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720. GCC(1)                      GNU Tools                      GCC(1)
  1721.  
  1722.  
  1723.  
  1724.           numbers, the last such option is the one that is effec-
  1725.           tive.
  1726.  
  1727.      Options of the form ` ---- ffff_f_l_a_g'  specify  machine-independent
  1728.      flags.   Most  flags  have both positive and negative forms;
  1729.      the negative form of `----ffffffffoooooooo' would be `----ffffnnnnoooo----ffffoooooooo'.  The  fol-
  1730.      lowing list shows only one form-the one which is not the de-
  1731.      fault.  You can figure out the other form by either removing
  1732.      `nnnnoooo---- ' or adding it.
  1733.  
  1734.      ----ffffffffllllooooaaaatttt----ssssttttoooorrrreeee
  1735.           Do not store floating  point  variables  in  registers.
  1736.           This  prevents undesirable excess precision on machines
  1737.           such as the 68000 where the floating registers (of  the
  1738.           68881) keep more precision than a ddddoooouuuubbbblllleeee is supposed to
  1739.           have.
  1740.  
  1741.           For most programs, the excess precision does only good,
  1742.           but  a  few  programs rely on the precise definition of
  1743.           IEEE floating point.  Use `----ffffffffllllooooaaaatttt----ssssttttoooorrrreeee' for such pro-
  1744.           grams.
  1745.  
  1746.      ----ffffmmmmeeeemmmmooooiiiizzzzeeee----llllooooooookkkkuuuuppppssss
  1747.  
  1748.      ----ffffssssaaaavvvveeee----mmmmeeeemmmmooooiiiizzzzeeeedddd
  1749.           Use heuristics to compile  faster  (C++  only).   These
  1750.           heuristics  are  not enabled by default, since they are
  1751.           only effective for certain input  files.   Other  input
  1752.           files compile more slowly.
  1753.  
  1754.           The first time the compiler must  build  a  call  to  a
  1755.           member  function  (or  reference  to a data member), it
  1756.           must (1) determine whether the class implements  member
  1757.           functions  of that name; (2) resolve which member func-
  1758.           tion to call (which involves figuring out what sorts of
  1759.           type  conversions  need  to be made); and (3) check the
  1760.           visibility of the member function to the  caller.   All
  1761.           of  this  adds up to slower compilation.  Normally, the
  1762.           second time a call is made to that member function  (or
  1763.           reference  to that data member), it must go through the
  1764.           same lengthy process again.  This means that code  like
  1765.           this
  1766.  
  1767.             cout << "This " << p << " has " << n << " legs.\n";
  1768.  
  1769.           makes six passes through all three steps.  By  using  a
  1770.           software  cache,  a  "hit"  significantly  reduces this
  1771.           cost.  Unfortunately, using the cache introduces anoth-
  1772.           er  layer  of mechanisms which must be implemented, and
  1773.           so incurs its own overhead.  `----ffffmmmmeeeemmmmooooiiiizzzzeeee ---- llllooooooookkkkuuuuppppssss'  en-
  1774.           ables the software cache.
  1775.  
  1776.  
  1777.  
  1778.  
  1779. GNU Tools            Last change: 1993/10/13                   27
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786. GCC(1)                      GNU Tools                      GCC(1)
  1787.  
  1788.  
  1789.  
  1790.           Because access privileges (visibility) to  members  and
  1791.           member  functions  may differ from one function context
  1792.           to the next, gggg++++++++ may need to flush the cache.  With the
  1793.           ` ---- ffffmmmmeeeemmmmooooiiiizzzzeeee ----llllooooooookkkkuuuuppppssss' flag, the cache is flushed after
  1794.           every function that is compiled.  The `-fsave-memoized'
  1795.           flag enables the same software cache, but when the com-
  1796.           piler determines that the context of the last  function
  1797.           compiled  would yield the same access privileges of the
  1798.           next function to compile, it preserves the cache.  This
  1799.           is most helpful when defining many member functions for
  1800.           the same class: with the exception of member  functions
  1801.           which  are  friends of other classes, each member func-
  1802.           tion has exactly the same access  privileges  as  every
  1803.           other, and the cache need not be flushed.
  1804.  
  1805.      ----ffffnnnnoooo----ddddeeeeffffaaaauuuulllltttt----iiiinnnnlllliiiinnnneeee
  1806.           Don't make member functions inline  by  default  merely
  1807.           because  they  are  defined inside the class scope (C++
  1808.           only).
  1809.  
  1810.      ----ffffnnnnoooo----ddddeeeeffffeeeerrrr----ppppoooopppp
  1811.           Always pop the arguments to each function call as  soon
  1812.           as  that function returns.  For machines which must pop
  1813.           arguments after a function call, the compiler  normally
  1814.           lets  arguments  accumulate  on  the  stack for several
  1815.           function calls and pops them all at once.
  1816.  
  1817.      ----ffffffffoooorrrrcccceeee----mmmmeeeemmmm
  1818.           Force memory operands to be copied into  registers  be-
  1819.           fore doing arithmetic on them.  This may produce better
  1820.           code by making all memory references  potential  common
  1821.           subexpressions.   When  they  are not common subexpres-
  1822.           sions, instruction  combination  should  eliminate  the
  1823.           separate  register-load.   I  am  interested in hearing
  1824.           about the difference this makes.
  1825.  
  1826.      ----ffffffffoooorrrrcccceeee----aaaaddddddddrrrr
  1827.           Force memory address constants to be copied into regis-
  1828.           ters before doing arithmetic on them.  This may produce
  1829.           better code just as `----ffffffffoooorrrrcccceeee----mmmmeeeemmmm' may.  I am interested
  1830.           in hearing about the difference this makes.
  1831.  
  1832.      ----ffffoooommmmiiiitttt----ffffrrrraaaammmmeeee----ppppooooiiiinnnntttteeeerrrr
  1833.           Don't keep the frame pointer in a  register  for  func-
  1834.           tions  that  don't  need one.  This avoids the instruc-
  1835.           tions to save, set up and restore  frame  pointers;  it
  1836.           also  makes  an  extra register available in many func-
  1837.           tions.  _I_t _a_l_s_o  _m_a_k_e_s  _d_e_b_u_g_g_i_n_g  _i_m_p_o_s_s_i_b_l_e  _o_n  most
  1838.           machines.
  1839.  
  1840.           On some machines, such as the Vax, this flag has no ef-
  1841.           fect,  because  the standard calling sequence automati-
  1842.  
  1843.  
  1844.  
  1845. GNU Tools            Last change: 1993/10/13                   28
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852. GCC(1)                      GNU Tools                      GCC(1)
  1853.  
  1854.  
  1855.  
  1856.           cally handles the frame pointer and nothing is saved by
  1857.           pretending  it  doesn't exist.  The machine-description
  1858.           macro FFFFRRRRAAAAMMMMEEEE____PPPPOOOOIIIINNNNTTTTEEEERRRR____RRRREEEEQQQQUUUUIIIIRRRREEEEDDDD controls whether a  target
  1859.           machine supports this flag.
  1860.  
  1861.      ----ffffiiiinnnnlllliiiinnnneeee----ffffuuuunnnnccccttttiiiioooonnnnssss
  1862.           Integrate all simple functions into their callers.  The
  1863.           compiler heuristically decides which functions are sim-
  1864.           ple enough to be worth integrating in this way.
  1865.  
  1866.           If all calls to a given function  are  integrated,  and
  1867.           the function is declared ssssttttaaaattttiiiicccc, then GCC normally does
  1868.           not output the function as assembler code  in  its  own
  1869.           right.
  1870.  
  1871.      ----ffffccccaaaalllllllleeeerrrr----ssssaaaavvvveeeessss
  1872.           Enable values to be allocated in registers that will be
  1873.           clobbered by function calls, by emitting extra instruc-
  1874.           tions to save and restore  the  registers  around  such
  1875.           calls.   Such  allocation is done only when it seems to
  1876.           result in better code than would otherwise be produced.
  1877.  
  1878.           This option is enabled by default on certain  machines,
  1879.           usually those which have no call-preserved registers to
  1880.           use instead.
  1881.  
  1882.      ----ffffkkkkeeeeeeeepppp----iiiinnnnlllliiiinnnneeee----ffffuuuunnnnccccttttiiiioooonnnnssss
  1883.           Even if all calls to a given function  are  integrated,
  1884.           and  the function is declared ssssttttaaaattttiiiicccc, nevertheless out-
  1885.           put a separate run-time callable version of  the  func-
  1886.           tion.
  1887.  
  1888.      ----ffffnnnnoooo----ffffuuuunnnnccccttttiiiioooonnnn----ccccsssseeee
  1889.           Do not put function addresses in registers;  make  each
  1890.           instruction  that calls a constant function contain the
  1891.           function's address explicitly.
  1892.  
  1893.           This option results in less efficient  code,  but  some
  1894.           strange  hacks  that  alter the assembler output may be
  1895.           confused by the optimizations performed when  this  op-
  1896.           tion is not used.
  1897.  
  1898.      ----ffffnnnnoooo----ppppeeeeeeeepppphhhhoooolllleeee
  1899.           Disable any machine-specific peephole optimizations.
  1900.  
  1901.      ----ffffffffaaaasssstttt----mmmmaaaatttthhhh
  1902.           This option allows GCC to violate  some  ANSI  or  IEEE
  1903.           rules/specifications in the interest of optimizing code
  1904.           for speed.  For example, it allows the compiler to  as-
  1905.           sume  arguments  to  the ssssqqqqrrrrtttt function are non-negative
  1906.           numbers.
  1907.  
  1908.  
  1909.  
  1910.  
  1911. GNU Tools            Last change: 1993/10/13                   29
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918. GCC(1)                      GNU Tools                      GCC(1)
  1919.  
  1920.  
  1921.  
  1922.           This option should never be turned on by any `---- OOOO'  op-
  1923.           tion  since  it can result in incorrect output for pro-
  1924.           grams which depend on an exact implementation  of  IEEE
  1925.           or ANSI rules/specifications for math functions.
  1926.  
  1927.      The following options control specific optimizations.  The `
  1928.      ---- OOOO2222'  option  turns on all of these optimizations except `----
  1929.      ffffuuuunnnnrrrroooollllllll----llllooooooooppppssss' and `----ffffuuuunnnnrrrroooollllllll----aaaallllllll----llllooooooooppppssss'.
  1930.  
  1931.      The `----OOOO' option usually turns on the `----fffftttthhhhrrrreeeeaaaadddd----jjjjuuuummmmppppssss' and `----
  1932.      ffffddddeeeellllaaaayyyyeeeedddd ---- bbbbrrrraaaannnncccchhhh' options, but specific machines may change
  1933.      the default optimizations.
  1934.  
  1935.      You can use the following  flags  in  the  rare  cases  when
  1936.      "fine-tuning" of optimizations to be performed is desired.
  1937.  
  1938.      ----ffffssssttttrrrreeeennnnggggtttthhhh----rrrreeeedddduuuucccceeee
  1939.           Perform the optimizations of  loop  strength  reduction
  1940.           and elimination of iteration variables.
  1941.  
  1942.      ----fffftttthhhhrrrreeeeaaaadddd----jjjjuuuummmmppppssss
  1943.           Perform optimizations where we check to see if  a  jump
  1944.           branches  to  a  location where another comparison sub-
  1945.           sumed by the first is found.  If so, the  first  branch
  1946.           is  redirected  to either the destination of the second
  1947.           branch or a point immediately following  it,  depending
  1948.           on whether the condition is known to be true or false.
  1949.  
  1950.      ----ffffuuuunnnnrrrroooollllllll----llllooooooooppppssss
  1951.           Perform the optimization of loop  unrolling.   This  is
  1952.           only  done  for loops whose number of iterations can be
  1953.           determined at compile time or run time.
  1954.  
  1955.      ----ffffuuuunnnnrrrroooollllllll----aaaallllllll----llllooooooooppppssss
  1956.           Perform the optimization of loop  unrolling.   This  is
  1957.           done  for  all  loops.  This usually makes programs run
  1958.           more slowly.
  1959.  
  1960.      ----ffffccccsssseeee----ffffoooolllllllloooowwww----jjjjuuuummmmppppssss
  1961.           In common subexpression elimination, scan through  jump
  1962.           instructions when the target of the jump is not reached
  1963.           by any other path.  For example, when CSE encounters an
  1964.           iiiiffff  statement  with an eeeellllsssseeee clause, CSE will follow the
  1965.           jump when the condition tested is false.
  1966.  
  1967.      ----ffffccccsssseeee----sssskkkkiiiipppp----bbbblllloooocccckkkkssss
  1968.           This is similar to `----ffffccccsssseeee----ffffoooolllllllloooowwww----jjjjuuuummmmppppssss', but causes CSE
  1969.           to  follow  jumps which conditionally skip over blocks.
  1970.           When CSE encounters a simple iiiiffff statement with no  else
  1971.           clause,  ` ---- ffffccccsssseeee----sssskkkkiiiipppp----bbbblllloooocccckkkkssss' causes CSE to follow the
  1972.           jump around the body of the iiiiffff.
  1973.  
  1974.  
  1975.  
  1976.  
  1977. GNU Tools            Last change: 1993/10/13                   30
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984. GCC(1)                      GNU Tools                      GCC(1)
  1985.  
  1986.  
  1987.  
  1988.      ----ffffrrrreeeerrrruuuunnnn----ccccsssseeee----aaaafffftttteeeerrrr----lllloooooooopppp
  1989.           Re-run common subexpression elimination after loop  op-
  1990.           timizations has been performed.
  1991.  
  1992.      ----ffffeeeelllliiiiddddeeee----ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  1993.           Elide  constructors  when  this  seems  plausible  (C++
  1994.           only).   With this flag, GNU C++ initializes yyyy directly
  1995.           from the call to ffffoooooooo without going through a  temporary
  1996.           in the following code:
  1997.  
  1998.           A foo (); A y = foo ();
  1999.  
  2000.           Without this option, GNU C++  first  initializes  yyyy  by
  2001.           calling  the  appropriate  constructor for type AAAA; then
  2002.           assigns the result of ffffoooooooo to a temporary; and, finally,
  2003.           replaces the initial valyue of `yyyy' with the temporary.
  2004.  
  2005.           The default behavior (`----ffffnnnnoooo---- eeeelllliiiiddddeeee ---- ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss')  is
  2006.           specified  by  the  draft  ANSI  C++ standard.  If your
  2007.           program's constructors have  side  effects,  using  ` ----
  2008.           ffffeeeelllliiiiddddeeee----ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss'  can  make  your  program act dif-
  2009.           ferently, since some constructor calls may be omitted.
  2010.  
  2011.      ----ffffeeeexxxxppppeeeennnnssssiiiivvvveeee----ooooppppttttiiiimmmmiiiizzzzaaaattttiiiioooonnnnssss
  2012.           Perform a number of minor optimizations that are  rela-
  2013.           tively expensive.
  2014.  
  2015.      ----ffffddddeeeellllaaaayyyyeeeedddd----bbbbrrrraaaannnncccchhhh
  2016.           If supported for the target machine, attempt to reorder
  2017.           instructions  to  exploit  instruction  slots available
  2018.           after delayed branch instructions.
  2019.  
  2020.      ----ffffsssscccchhhheeeedddduuuulllleeee----iiiinnnnssssnnnnssss
  2021.           If supported for the target machine, attempt to reorder
  2022.           instructions  to  eliminate execution stalls due to re-
  2023.           quired data being  unavailable.   This  helps  machines
  2024.           that  have  slow floating point or memory load instruc-
  2025.           tions by allowing other instructions to be issued until
  2026.           the result of the load or floating point instruction is
  2027.           required.
  2028.  
  2029.      ----ffffsssscccchhhheeeedddduuuulllleeee----iiiinnnnssssnnnnssss2222
  2030.           Similar to `----ffffsssscccchhhheeeedddduuuulllleeee----iiiinnnnssssnnnnssss', but  requests  an  addi-
  2031.           tional  pass  of  instruction scheduling after register
  2032.           allocation has been done.  This is especially useful on
  2033.           machines  with  a  relatively small number of registers
  2034.           and where memory load instructions take more  than  one
  2035.           cycle.
  2036.  
  2037. TTTTAAAARRRRGGGGEEEETTTT OOOOPPPPTTTTIIIIOOOONNNNSSSS
  2038.      By default, GNU CC  compiles  code  for  the  same  type  of
  2039.      machine  that  you  are  using.  However, it can also be in-
  2040.  
  2041.  
  2042.  
  2043. GNU Tools            Last change: 1993/10/13                   31
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050. GCC(1)                      GNU Tools                      GCC(1)
  2051.  
  2052.  
  2053.  
  2054.      stalled as a cross-compiler, to compile for some other  type
  2055.      of  machine.   In  fact, several different configurations of
  2056.      GNU CC, for different target machines, can be installed side
  2057.      by  side.   Then  you specify which one to use with the `----bbbb'
  2058.      option.
  2059.  
  2060.      In addition, older and newer versions of GNU CC can  be  in-
  2061.      stalled  side  by  side.   One of them (probably the newest)
  2062.      will be the default, but  you  may  sometimes  wish  to  use
  2063.      another.
  2064.  
  2065.      ----bbbb _m_a_c_h_i_n_e
  2066.           The argument _m_a_c_h_i_n_e specifies the target  machine  for
  2067.           compilation.   This  is  useful when you have installed
  2068.           GNU CC as a cross-compiler.
  2069.  
  2070.           The value to use for _m_a_c_h_i_n_e is the same as was  speci-
  2071.           fied  as  the machine type when configuring GNU CC as a
  2072.           cross-compiler.  For example, if a  cross-compiler  was
  2073.           configured  with  `ccccoooonnnnffffiiiigggguuuurrrreeee i386v', meaning to compile
  2074.           for an 80386 running System V, then you would specify `
  2075.           ----bbbb iiii333388886666vvvv' to run that cross compiler.
  2076.  
  2077.           When you do not specify `----bbbb', it normally means to com-
  2078.           pile for the same type of machine that you are using.
  2079.  
  2080.      ----VVVV _v_e_r_s_i_o_n
  2081.           The argument _v_e_r_s_i_o_n specifies which version of GNU  CC
  2082.           to  run.  This is useful when multiple versions are in-
  2083.           stalled.  For example, _v_e_r_s_i_o_n might be `2222....0000',  meaning
  2084.           to run GNU CC version 2.0.
  2085.  
  2086.           The default version, when you do not specify `---- VVVV',  is
  2087.           controlled  by  the way GNU CC is installed.  Normally,
  2088.           it will be a version that is  recommended  for  general
  2089.           use.
  2090.  
  2091. MMMMAAAACCCCHHHHIIIINNNNEEEE DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNTTTT OOOOPPPPTTTTIIIIOOOONNNNSSSS
  2092.      Each of the target machine types can have  its  own  special
  2093.      options,  starting  with  ` ---- mmmm',  to  choose  among various
  2094.      hardware models or configurations - for  example,  68010  vs
  2095.      68020,  floating  coprocessor  or  none.  A single installed
  2096.      version of the compiler can compile for any model or  confi-
  2097.      guration, according to the options specified.
  2098.  
  2099.      Some configurations of the compiler also support  additional
  2100.      special options, usually for command-line compatibility with
  2101.      other compilers on the same platform.
  2102.  
  2103.      These are the `----mmmm' options defined for the 68000 series:
  2104.  
  2105.      ----mmmm66668888000000000000
  2106.  
  2107.  
  2108.  
  2109. GNU Tools            Last change: 1993/10/13                   32
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116. GCC(1)                      GNU Tools                      GCC(1)
  2117.  
  2118.  
  2119.  
  2120.      ----mmmmcccc66668888000000000000
  2121.           Generate output for a 68000.  This is the default  when
  2122.           the compiler is configured for 68000-based systems.
  2123.  
  2124.      ----mmmm66668888000022220000
  2125.  
  2126.      ----mmmmcccc66668888000022220000
  2127.           Generate output for a  68020  (rather  than  a  68000).
  2128.           This is the default when the compiler is configured for
  2129.           68020-based systems.
  2130.  
  2131.      ----mmmm66668888888888881111
  2132.           Generate  output  containing  68881  instructions   for
  2133.           floating  point.   This  is the default for most 68020-
  2134.           based systems unless ----nnnnffffpppp was specified when  the  com-
  2135.           piler was configured.
  2136.  
  2137.      ----mmmm66668888000033330000
  2138.           Generate output for a 68030.  This is the default  when
  2139.           the compiler is configured for 68030-based systems.
  2140.  
  2141.      ----mmmm66668888000044440000
  2142.           Generate output for a 68040.  This is the default  when
  2143.           the compiler is configured for 68040-based systems.
  2144.  
  2145.      ----mmmm66668888000022220000----44440000
  2146.           Generate output for a 68040, without using any  of  the
  2147.           new  instructions.   This results in code which can run
  2148.           relatively efficiently on either  a  68020/68881  or  a
  2149.           68030 or a 68040.
  2150.  
  2151.      ----mmmmffffppppaaaa
  2152.           Generate output containing  Sun  FPA  instructions  for
  2153.           floating point.
  2154.  
  2155.      ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2156.           Generate output containing library calls  for  floating
  2157.           point.   _W_A_R_N_I_N_G:  the requisite libraries are not part
  2158.           of GNU CC.  Normally the facilities  of  the  machine's
  2159.           usual  C  compiler  are  used,  but  this can't be done
  2160.           directly in cross-compilation.  You must make your  own
  2161.           arrangements  to provide suitable library functions for
  2162.           cross-compilation.
  2163.  
  2164.      ----mmmmsssshhhhoooorrrrtttt
  2165.           Consider type iiiinnnntttt to be 16 bits wide, like sssshhhhoooorrrrtttt iiiinnnntttt.
  2166.  
  2167.      ----mmmmnnnnoooobbbbiiiittttffffiiiieeeelllldddd
  2168.           Do not use the bit-field instructions.  `---- mmmm66668888000000000000'  im-
  2169.           plies `----mmmmnnnnoooobbbbiiiittttffffiiiieeeelllldddd'.
  2170.  
  2171.      ----mmmmbbbbiiiittttffffiiiieeeelllldddd
  2172.  
  2173.  
  2174.  
  2175. GNU Tools            Last change: 1993/10/13                   33
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182. GCC(1)                      GNU Tools                      GCC(1)
  2183.  
  2184.  
  2185.  
  2186.           Do use the bit-field instructions.  `----mmmm66668888000022220000' implies `
  2187.           ---- mmmmbbbbiiiittttffffiiiieeeelllldddd'.  This is the default if you use the unmo-
  2188.           dified sources.
  2189.  
  2190.      ----mmmmrrrrttttdddd
  2191.           Use a different function-calling convention,  in  which
  2192.           functions  that take a fixed number of arguments return
  2193.           with the rrrrttttdddd instruction, which  pops  their  arguments
  2194.           while  returning.   This  saves  one instruction in the
  2195.           caller since there is no  need  to  pop  the  arguments
  2196.           there.
  2197.  
  2198.           This calling convention is incompatible  with  the  one
  2199.           normally used on Unix, so you cannot use it if you need
  2200.           to call libraries compiled with the Unix compiler.
  2201.  
  2202.           Also, you must  provide  function  prototypes  for  all
  2203.           functions  that take variable numbers of arguments (in-
  2204.           cluding pppprrrriiiinnnnttttffff); otherwise incorrect code will be  gen-
  2205.           erated for calls to those functions.
  2206.  
  2207.           In addition, seriously incorrect code  will  result  if
  2208.           you  call a function with too many arguments.  (Normal-
  2209.           ly, extra arguments are harmlessly ignored.)
  2210.  
  2211.           The rrrrttttdddd instruction is supported by the 68010 and 68020
  2212.           processors, but not by the 68000.
  2213.  
  2214.      These `----mmmm' options are defined for the Vax:
  2215.  
  2216.      ----mmmmuuuunnnniiiixxxx
  2217.           Do not output certain jump instructions (aaaaoooobbbblllleeeeqqqq and  so
  2218.           on)  that  the Unix assembler for the Vax cannot handle
  2219.           across long ranges.
  2220.  
  2221.      ----mmmmggggnnnnuuuu
  2222.           Do output those jump instructions,  on  the  assumption
  2223.           that you will assemble with the GNU assembler.
  2224.  
  2225.      ----mmmmgggg   Output code for g-format floating  point  numbers  in-
  2226.           stead of d-format.
  2227.  
  2228.      These `----mmmm' switches are supported on the SPARC:
  2229.  
  2230.      ----mmmmffffppppuuuu
  2231.  
  2232.      ----mmmmhhhhaaaarrrrdddd----ffffllllooooaaaatttt
  2233.           Generate output containing floating point instructions.
  2234.           This is the default.
  2235.  
  2236.      ----mmmmnnnnoooo----ffffppppuuuu
  2237.  
  2238.  
  2239.  
  2240.  
  2241. GNU Tools            Last change: 1993/10/13                   34
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248. GCC(1)                      GNU Tools                      GCC(1)
  2249.  
  2250.  
  2251.  
  2252.      ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2253.           Generate output containing library calls  for  floating
  2254.           point.  _W_a_r_n_i_n_g: there is no GNU floating-point library
  2255.           for SPARC.  Normally the facilities  of  the  machine's
  2256.           usual  C  compiler  are  used,  but this cannot be done
  2257.           directly in cross-compilation.  You must make your  own
  2258.           arrangements  to provide suitable library functions for
  2259.           cross-compilation.
  2260.  
  2261.           ----mmmmssssoooofffftttt----ffffllllooooaaaatttt changes the calling convention in the out-
  2262.           put  file;  therefore, it is only useful if you compile
  2263.           _a_l_l of a program with this option.
  2264.  
  2265.      ----mmmmnnnnoooo----eeeeppppiiiilllloooogggguuuueeee
  2266.  
  2267.      ----mmmmeeeeppppiiiilllloooogggguuuueeee
  2268.           With ----mmmmeeeeppppiiiilllloooogggguuuueeee (the default), the compiler always  em-
  2269.           its code for function exit at the end of each function.
  2270.           Any function exit in the middle of the  function  (such
  2271.           as a return statement in C) will generate a jump to the
  2272.           exit code at the end of the function.
  2273.  
  2274.           With ----mmmmnnnnoooo----eeeeppppiiiilllloooogggguuuueeee, the compiler  tries  to  emit  exit
  2275.           code inline at every function exit.
  2276.  
  2277.      ----mmmmnnnnoooo----vvvv8888
  2278.  
  2279.      ----mmmmvvvv8888
  2280.  
  2281.      ----mmmmssssppppaaaarrrrcccclllliiiitttteeee
  2282.           These three options select variations on the SPARC  ar-
  2283.           chitecture.
  2284.  
  2285.           By default  (unless  specifically  configured  for  the
  2286.           Fujitsu SPARClite), GCC generates code for the v7 vari-
  2287.           ant of the SPARC architecture.
  2288.  
  2289.           ----mmmmvvvv8888 will give you SPARC v8 code.  The only  difference
  2290.           from  v7  code  is  that the compiler emits the integer
  2291.           multiply and integer divide instructions which exist in
  2292.           SPARC v8 but not in SPARC v7.
  2293.  
  2294.           ----mmmmssssppppaaaarrrrcccclllliiiitttteeee will give you SPARClite  code.   This  adds
  2295.           the  integer  multiply,  integer  divide  step and scan
  2296.           (ffs) instructions which exist in SPARClite but not  in
  2297.           SPARC v7.
  2298.  
  2299.      ----mmmmccccyyyypppprrrreeeessssssss
  2300.  
  2301.      ----mmmmssssuuuuppppeeeerrrrssssppppaaaarrrrcccc
  2302.           These two options select the processor  for  which  the
  2303.           code is optimised.
  2304.  
  2305.  
  2306.  
  2307. GNU Tools            Last change: 1993/10/13                   35
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314. GCC(1)                      GNU Tools                      GCC(1)
  2315.  
  2316.  
  2317.  
  2318.           With ----mmmmccccyyyypppprrrreeeessssssss (the default),  the  compiler  optimises
  2319.           code  for  the  Cypress  CY7C602  chip,  as used in the
  2320.           SparcStation/SparcSever  3xx  series.  This   is   also
  2321.           apropriate for the older SparcStation 1, 2, IPX etc.
  2322.  
  2323.           With ----mmmmssssuuuuppppeeeerrrrssssppppaaaarrrrcccc the compiler optimises code  for  the
  2324.           SuperSparc  cpu,  as  used in the SparcStation 10, 1000
  2325.           and 2000 series. This flag also enables use of the full
  2326.           SPARC v8 instruction set.
  2327.  
  2328.      These `----mmmm' options are defined for the Convex:
  2329.  
  2330.      ----mmmmcccc1111  Generate output for a C1.  This is  the  default  when
  2331.           the compiler is configured for a C1.
  2332.  
  2333.      ----mmmmcccc2222  Generate output for a C2.  This is  the  default  when
  2334.           the compiler is configured for a C2.
  2335.  
  2336.      ----mmmmaaaarrrrggggccccoooouuuunnnntttt
  2337.           Generate code which puts an argument count in the  word
  2338.           preceding  each argument list.  Some nonportable Convex
  2339.           and Vax programs need this word.  (Debuggers don't, ex-
  2340.           cept for functions with variable-length argument lists;
  2341.           this info is in the symbol table.)
  2342.  
  2343.      ----mmmmnnnnooooaaaarrrrggggccccoooouuuunnnntttt
  2344.           Omit the argument count word.  This is the  default  if
  2345.           you use the unmodified sources.
  2346.  
  2347.      These `----mmmm' options are defined for the AMD Am29000:
  2348.  
  2349.      ----mmmmddddwwww  Generate code that assumes the DW bit  is  set,  i.e.,
  2350.           that byte and halfword operations are directly support-
  2351.           ed by the hardware.  This is the default.
  2352.  
  2353.      ----mmmmnnnnooooddddwwww
  2354.           Generate code that assumes the DW bit is not set.
  2355.  
  2356.      ----mmmmbbbbwwww  Generate code that assumes the  system  supports  byte
  2357.           and halfword write operations.  This is the default.
  2358.  
  2359.      ----mmmmnnnnbbbbwwww
  2360.           Generate code that assumes the systems does not support
  2361.           byte  and  halfword  write operations.  This implies `----
  2362.           mmmmnnnnooooddddwwww'.
  2363.  
  2364.      ----mmmmssssmmmmaaaallllllll
  2365.           Use a small memory model that assumes that all function
  2366.           addresses  are either within a single 256 KB segment or
  2367.           at an absolute address of less than 256K.  This  allows
  2368.           the  ccccaaaallllllll  instruction  to  be used instead of a ccccoooonnnnsssstttt,
  2369.           ccccoooonnnnsssstttthhhh, ccccaaaalllllllliiii sequence.
  2370.  
  2371.  
  2372.  
  2373. GNU Tools            Last change: 1993/10/13                   36
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380. GCC(1)                      GNU Tools                      GCC(1)
  2381.  
  2382.  
  2383.  
  2384.      ----mmmmllllaaaarrrrggggeeee
  2385.           Do not assume that the ccccaaaallllllll instruction  can  be  used;
  2386.           this is the default.
  2387.  
  2388.      ----mmmm22229999000055550000
  2389.           Generate code for the Am29050.
  2390.  
  2391.      ----mmmm22229999000000000000
  2392.           Generate code for the Am29000.  This is the default.
  2393.  
  2394.      ----mmmmkkkkeeeerrrrnnnneeeellll----rrrreeeeggggiiiisssstttteeeerrrrssss
  2395.           Generate references to registers ggggrrrr66664444----ggggrrrr99995555  instead  of
  2396.           ggggrrrr99996666----ggggrrrr111122227777.   This  option  can  be used when compiling
  2397.           kernel code that wants a set of global  registers  dis-
  2398.           joint from that used by user-mode code.
  2399.  
  2400.           Note that when this option is used, register names in `
  2401.           ----ffff' flags must use the normal, user-mode, names.
  2402.  
  2403.      ----mmmmuuuusssseeeerrrr----rrrreeeeggggiiiisssstttteeeerrrrssss
  2404.           Use the normal set  of  global  registers,  ggggrrrr99996666----ggggrrrr111122227777.
  2405.           This is the default.
  2406.  
  2407.      ----mmmmssssttttaaaacccckkkk----cccchhhheeeecccckkkk
  2408.           Insert a call to ________mmmmsssspppp____cccchhhheeeecccckkkk after each  stack  adjust-
  2409.           ment.  This is often used for kernel code.
  2410.  
  2411.      These `----mmmm' options are defined for  Motorola  88K  architec-
  2412.      tures:
  2413.  
  2414.      ----mmmm88888888000000000000
  2415.           Generate code that works well on both  the  m88100  and
  2416.           the m88110.
  2417.  
  2418.      ----mmmm88888888111100000000
  2419.           Generate code that works best for the m88100, but  that
  2420.           also runs on the m88110.
  2421.  
  2422.      ----mmmm88888888111111110000
  2423.           Generate code that works best for the m88110,  and  may
  2424.           not run on the m88100.
  2425.  
  2426.      ----mmmmiiiiddddeeeennnnttttiiiiffffyyyy----rrrreeeevvvviiiissssiiiioooonnnn
  2427.           Include an iiiiddddeeeennnntttt  directive  in  the  assembler  output
  2428.           recording  the source file name, compiler name and ver-
  2429.           sion, timestamp, and compilation flags used.
  2430.  
  2431.      ----mmmmnnnnoooo----uuuunnnnddddeeeerrrrssssccccoooorrrreeeessss
  2432.           In assembler output, emit symbol names  without  adding
  2433.           an  underscore character at the beginning of each name.
  2434.           The default is to use an underscore as prefix  on  each
  2435.           name.
  2436.  
  2437.  
  2438.  
  2439. GNU Tools            Last change: 1993/10/13                   37
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446. GCC(1)                      GNU Tools                      GCC(1)
  2447.  
  2448.  
  2449.  
  2450.      ----mmmmnnnnoooo----cccchhhheeeecccckkkk----zzzzeeeerrrroooo----ddddiiiivvvviiiissssiiiioooonnnn
  2451.  
  2452.      ----mmmmcccchhhheeeecccckkkk----zzzzeeeerrrroooo----ddddiiiivvvviiiissssiiiioooonnnn
  2453.           Early models of the 88K architecture had problems  with
  2454.           division  by  zero;  in particular, many of them didn't
  2455.           trap.  Use these options to avoid including (or to  in-
  2456.           clude explicitly) additional code to detect division by
  2457.           zero and signal an exception.  All  GCC  configurations
  2458.           for the 88K use `----mmmmcccchhhheeeecccckkkk----zzzzeeeerrrroooo----ddddiiiivvvviiiissssiiiioooonnnn' by default.
  2459.  
  2460.      ----mmmmooooccccssss----ddddeeeebbbbuuuugggg----iiiinnnnffffoooo
  2461.  
  2462.      ----mmmmnnnnoooo----ooooccccssss----ddddeeeebbbbuuuugggg----iiiinnnnffffoooo
  2463.           Include  (or  omit)  additional  debugging  information
  2464.           (about registers used in each stack frame) as specified
  2465.           in the 88Open  Object  Compatibility  Standard,  "OCS".
  2466.           This  extra  information is not needed by GDB.  The de-
  2467.           fault for DG/UX, SVr4, and Delta 88 SVr3.2  is  to  in-
  2468.           clude  this  information; other 88k configurations omit
  2469.           this information by default.
  2470.  
  2471.      ----mmmmooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn
  2472.  
  2473.      ----mmmmnnnnoooo----ooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn
  2474.           Force (or do not require) register values to be  stored
  2475.           in  a particular place in stack frames, as specified in
  2476.           OCS.  The DG/UX, Delta88 SVr3.2, and BCS configurations
  2477.           use  ` ---- mmmmooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn'; other 88k configurations
  2478.           have the default `----mmmmnnnnoooo----ooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn'.
  2479.  
  2480.      ----mmmmooooppppttttiiiimmmmiiiizzzzeeee----aaaarrrrgggg----aaaarrrreeeeaaaa
  2481.  
  2482.      ----mmmmnnnnoooo----ooooppppttttiiiimmmmiiiizzzzeeee----aaaarrrrgggg----aaaarrrreeeeaaaa
  2483.           Control  how  to  store  function  arguments  in  stack
  2484.           frames.   ` ---- mmmmooooppppttttiiiimmmmiiiizzzzeeee ----aaaarrrrgggg----aaaarrrreeeeaaaa' saves space, but may
  2485.           break some debuggers (not GDB).  `----mmmmnnnnoooo----ooooppppttttiiiimmmmiiiizzzzeeee ---- aaaarrrrgggg ----
  2486.           aaaarrrreeeeaaaa'  conforms  better  to standards.   By default GCC
  2487.           does not optimize the argument area.
  2488.  
  2489.      ----mmmmsssshhhhoooorrrrtttt----ddddaaaattttaaaa----_n_u_m
  2490.           _n_u_m Generate smaller data references by making them re-
  2491.           lative to rrrr0000, which allows loading a value using a sin-
  2492.           gle instruction (rather than the usual two).  You  con-
  2493.           trol  which  data references are affected by specifying
  2494.           _n_u_m with this option.  For example, if you specify  ` ----
  2495.           mmmmsssshhhhoooorrrrtttt----ddddaaaattttaaaa----555511112222', then the data references affected are
  2496.           those involving displacements of less than  512  bytes.
  2497.           ` ---- mmmmsssshhhhoooorrrrtttt ----ddddaaaattttaaaa---- _n_u_m' is not effective for _n_u_m greater
  2498.           than 64K.
  2499.  
  2500.      ----mmmmsssseeeerrrriiiiaaaalllliiiizzzzeeee----vvvvoooollllaaaattttiiiilllleeee
  2501.  
  2502.  
  2503.  
  2504.  
  2505. GNU Tools            Last change: 1993/10/13                   38
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512. GCC(1)                      GNU Tools                      GCC(1)
  2513.  
  2514.  
  2515.  
  2516.      ----mmmmnnnnoooo----sssseeeerrrriiiiaaaalllliiiizzzzeeee----vvvvoooollllaaaattttiiiilllleeee
  2517.           Do, or do not, generate code  to  guarantee  sequential
  2518.           consistency of volatile memory references.
  2519.  
  2520.           GNU CC always guarantees consistency  by  default,  for
  2521.           the  preferred  processor  submodel.   How this is done
  2522.           depends on the submodel.
  2523.  
  2524.           The m88100 processor does not reorder memory references
  2525.           and  so always provides sequential consistency.  If you
  2526.           use `----mmmm88888888111100000000', GNU CC does not generate any special in-
  2527.           structions for sequential consistency.
  2528.  
  2529.           The order of memory references made by the m88110  pro-
  2530.           cessor  does not always match the order of the instruc-
  2531.           tions requesting those references.   In  particular,  a
  2532.           load  instruction  may execute before a preceding store
  2533.           instruction.  Such reordering violates sequential  con-
  2534.           sistency  of volatile memory references, when there are
  2535.           multiple processors.  When you use ` ---- mmmm88888888000000000000'  or  ` ----
  2536.           mmmm88888888111111110000', GNU CC generates special instructions when ap-
  2537.           propriate, to force execution in the proper order.
  2538.  
  2539.           The extra code generated to guarantee  consistency  may
  2540.           affect  the  performance  of  your application.  If you
  2541.           know that you can safely forgo this guarantee, you  may
  2542.           use the option `----mmmmnnnnoooo----sssseeeerrrriiiiaaaalllliiiizzzzeeee----vvvvoooollllaaaattttiiiilllleeee'.
  2543.  
  2544.           If you use the `----mmmm88888888111100000000' option but require  sequential
  2545.           consistency  when  running on the m88110 processor, you
  2546.           should use `----mmmmsssseeeerrrriiiiaaaalllliiiizzzzeeee----vvvvoooollllaaaattttiiiilllleeee'.
  2547.  
  2548.      ----mmmmssssvvvvrrrr4444
  2549.  
  2550.      ----mmmmssssvvvvrrrr3333
  2551.           Turn on (`----mmmmssssvvvvrrrr4444') or off (`---- mmmmssssvvvvrrrr3333')  compiler  exten-
  2552.           sions  related to System V release 4 (SVr4).  This con-
  2553.           trols the following:
  2554.  
  2555.         +o  Which variant of the assembler syntax to  emit  (which
  2556.           you can select independently using `----mmmmvvvveeeerrrrssssiiiioooonnnn----00003333....00000000').
  2557.  
  2558.         +o  `----mmmmssssvvvvrrrr4444' makes the C preprocessor  recognize  `####pppprrrraaaaggggmmmmaaaa
  2559.           wwwweeeeaaaakkkk'
  2560.  
  2561.         +o  `----mmmmssssvvvvrrrr4444' makes GCC issue additional declaration direc-
  2562.           tives used in SVr4.
  2563.  
  2564.      `----mmmmssssvvvvrrrr3333' is the default for all m88K  configurations  except
  2565.      the SVr4 configuration.
  2566.  
  2567.      ----mmmmttttrrrraaaapppp----llllaaaarrrrggggeeee----sssshhhhiiiifffftttt
  2568.  
  2569.  
  2570.  
  2571. GNU Tools            Last change: 1993/10/13                   39
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578. GCC(1)                      GNU Tools                      GCC(1)
  2579.  
  2580.  
  2581.  
  2582.      ----mmmmhhhhaaaannnnddddlllleeee----llllaaaarrrrggggeeee----sssshhhhiiiifffftttt
  2583.           Include code to detect bit-shifts of more than 31 bits;
  2584.           respectively,  trap  such shifts or emit code to handle
  2585.           them properly.  By default GCC makes no special  provi-
  2586.           sion for large bit shifts.
  2587.  
  2588.      ----mmmmuuuusssseeee----ddddiiiivvvv----iiiinnnnssssttttrrrruuuuccccttttiiiioooonnnn
  2589.           Very early models of the 88K architecture didn't have a
  2590.           divide  instruction,  so GCC avoids that instruction by
  2591.           default.  Use this option to specify that it's safe  to
  2592.           use the divide instruction.
  2593.  
  2594.      ----mmmmvvvveeeerrrrssssiiiioooonnnn----00003333....00000000
  2595.           In the DG/UX configuration, there are  two  flavors  of
  2596.           SVr4.   This  option  modifies ----mmmmssssvvvvrrrr4444 to select whether
  2597.           the hybrid-COFF or real-ELF flavor is used.  All  other
  2598.           configurations ignore this option.
  2599.  
  2600.      ----mmmmwwwwaaaarrrrnnnn----ppppaaaasssssssseeeedddd----ssssttttrrrruuuuccccttttssss
  2601.           Warn when a function passes a struct as an argument  or
  2602.           result.   Structure-passing  conventions  have  changed
  2603.           during the evolution of the C language, and  are  often
  2604.           the  source  of  portability problems.  By default, GCC
  2605.           issues no such warning.
  2606.  
  2607.      These options are defined for the IBM RS6000:
  2608.  
  2609.      ----mmmmffffpppp----iiiinnnn----ttttoooocccc
  2610.  
  2611.      ----mmmmnnnnoooo----ffffpppp----iiiinnnn----ttttoooocccc
  2612.           Control whether or not floating-point constants  go  in
  2613.           the  Table  of  Contents  (TOC),  a table of all global
  2614.           variable and function addresses.  By default  GCC  puts
  2615.           floating-point constants there; if the TOC overflows, `
  2616.           ----mmmmnnnnoooo----ffffpppp----iiiinnnn----ttttoooocccc' will reduce the size of the TOC,  which
  2617.           may avoid the overflow.
  2618.  
  2619.      These `----mmmm' options are defined for the IBM RT PC:
  2620.  
  2621.      ----mmmmiiiinnnn----lllliiiinnnneeee----mmmmuuuullll
  2622.           Use an in-line code sequence  for  integer  multiplies.
  2623.           This is the default.
  2624.  
  2625.      ----mmmmccccaaaallllllll----lllliiiibbbb----mmmmuuuullll
  2626.           Call llllmmmmuuuullll$$$$$$$$ for integer multiples.
  2627.  
  2628.      ----mmmmffffuuuullllllll----ffffpppp----bbbblllloooocccckkkkssss
  2629.           Generate full-size floating point data blocks,  includ-
  2630.           ing  the minimum amount of scratch space recommended by
  2631.           IBM.  This is the default.
  2632.  
  2633.      ----mmmmmmmmiiiinnnniiiimmmmuuuummmm----ffffpppp----bbbblllloooocccckkkkssss
  2634.  
  2635.  
  2636.  
  2637. GNU Tools            Last change: 1993/10/13                   40
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644. GCC(1)                      GNU Tools                      GCC(1)
  2645.  
  2646.  
  2647.  
  2648.           Do not include extra scratch space  in  floating  point
  2649.           data  blocks.  This results in smaller code, but slower
  2650.           execution, since scratch space must be allocated dynam-
  2651.           ically.
  2652.  
  2653.      ----mmmmffffpppp----aaaarrrrgggg----iiiinnnn----ffffpppprrrreeeeggggssss
  2654.           Use a calling sequence incompatible with the  IBM  cal-
  2655.           ling  convention  in which floating point arguments are
  2656.           passed  in  floating  point   registers.    Note   that
  2657.           vvvvaaaarrrraaaarrrrggggssss....hhhh  and  ssssttttddddaaaarrrrggggssss....hhhh  will  not work with floating
  2658.           point operands if this option is specified.
  2659.  
  2660.      ----mmmmffffpppp----aaaarrrrgggg----iiiinnnn----ggggrrrreeeeggggssss
  2661.           Use the normal calling convention  for  floating  point
  2662.           arguments.  This is the default.
  2663.  
  2664.      ----mmmmhhhhcccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
  2665.           Return structures of more  than  one  word  in  memory,
  2666.           rather than in a register.  This provides compatibility
  2667.           with the MetaWare HighC (hc) compiler.  Use  ` ---- ffffppppcccccccc ----
  2668.           ssssttttrrrruuuucccctttt ---- rrrreeeettttuuuurrrrnnnn'  for compatibility with the Portable C
  2669.           Compiler (pcc).
  2670.  
  2671.      ----mmmmnnnnoooohhhhcccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
  2672.           Return some structures of more than one word in  regis-
  2673.           ters,  when convenient.  This is the default.  For com-
  2674.           patibility with the IBM-supplied compilers, use  either
  2675.           `----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn' or `----mmmmhhhhcccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn'.
  2676.  
  2677.      These `----mmmm' options are defined for the MIPS family  of  com-
  2678.      puters:
  2679.  
  2680.      ----mmmmccccppppuuuu====_c_p_u-_t_y_p_e
  2681.           Assume the defaults for the machine type _c_p_u-_t_y_p_e  when
  2682.           scheduling  instructions.   The default _c_p_u-_t_y_p_e is ddddeeee----
  2683.           ffffaaaauuuulllltttt, which picks the longest cycles times for any  of
  2684.           the  machines, in order that the code run at reasonable
  2685.           rates on all MIPS cpu's.  Other  choices  for  _c_p_u-_t_y_p_e
  2686.           are  rrrr2222000000000000,  rrrr3333000000000000,  rrrr4444000000000000, and rrrr6666000000000000.  While picking a
  2687.           specific _c_p_u-_t_y_p_e will  schedule  things  appropriately
  2688.           for  that  particular  chip, the compiler will not gen-
  2689.           erate any code that does not meet level 1 of  the  MIPS
  2690.           ISA  (instruction  set architecture) without the ----mmmmiiiippppssss2222
  2691.           or ----mmmmiiiippppssss3333 switches being used.
  2692.  
  2693.      ----mmmmiiiippppssss2222
  2694.           Issue instructions from level 2 of the MIPS ISA (branch
  2695.           likely, square root instructions).  The ----mmmmccccppppuuuu====rrrr4444000000000000 or
  2696.           ----mmmmccccppppuuuu====rrrr6666000000000000 switch must be used in conjunction with   ----
  2697.           mmmmiiiippppssss2222.
  2698.  
  2699.      ----mmmmiiiippppssss3333
  2700.  
  2701.  
  2702.  
  2703. GNU Tools            Last change: 1993/10/13                   41
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710. GCC(1)                      GNU Tools                      GCC(1)
  2711.  
  2712.  
  2713.  
  2714.           Issue instructions from level 3 of the MIPS ISA (64 bit
  2715.           instructions).   The ----mmmmccccppppuuuu====rrrr4444000000000000 switch must be used in
  2716.           conjunction with ----mmmmiiiippppssss2222.
  2717.  
  2718.      ----mmmmiiiinnnntttt66664444
  2719.  
  2720.      ----mmmmlllloooonnnngggg66664444
  2721.  
  2722.      ----mmmmlllloooonnnngggglllloooonnnngggg111122228888
  2723.           These options don't work at present.
  2724.  
  2725.      ----mmmmmmmmiiiippppssss----aaaassss
  2726.           Generate code for the MIPS assembler, and invoke mmmmiiiippppssss ----
  2727.           ttttffffiiiilllleeee to add normal debug information.  This is the de-
  2728.           fault for all platforms except for the OSF/1  reference
  2729.           platform,  using the OSF/rose object format.  If any of
  2730.           the ----ggggggggddddbbbb, ----ggggssssttttaaaabbbbssss, or ----ggggssssttttaaaabbbbssss++++ switches are used,  the
  2731.           mmmmiiiippppssss ---- ttttffffiiiilllleeee  program will encapsulate the stabs within
  2732.           MIPS ECOFF.
  2733.  
  2734.      ----mmmmggggaaaassss
  2735.           Generate code for the GNU assembler.  This is  the  de-
  2736.           fault  on  the  OSF/1  reference  platform,  using  the
  2737.           OSF/rose object format.
  2738.  
  2739.      ----mmmmrrrrnnnnaaaammmmeeeessss
  2740.  
  2741.      ----mmmmnnnnoooo----rrrrnnnnaaaammmmeeeessss
  2742.           The ----mmmmrrrrnnnnaaaammmmeeeessss switch says to output code using the  MIPS
  2743.           software  names  for  the  registers,  instead  of  the
  2744.           hardware names (ie, aaaa0000 instead of $$$$4444).  The GNU  assem-
  2745.           bler does not support the ----mmmmrrrrnnnnaaaammmmeeeessss switch, and the MIPS
  2746.           assembler will be instructed to run the MIPS C  prepro-
  2747.           cessor over the source file.  The ----mmmmnnnnoooo----rrrrnnnnaaaammmmeeeessss switch is
  2748.           default.
  2749.  
  2750.      ----mmmmggggppppoooopppptttt
  2751.  
  2752.      ----mmmmnnnnoooo----ggggppppoooopppptttt
  2753.           The ----mmmmggggppppoooopppptttt switch says to write all of  the  data  de-
  2754.           clarations before the instructions in the text section,
  2755.           to all the MIPS assembler to generate one  word  memory
  2756.           references  instead of using two words for short global
  2757.           or static data items.  This is on by default if optimi-
  2758.           zation is selected.
  2759.  
  2760.      ----mmmmssssttttaaaattttssss
  2761.  
  2762.      ----mmmmnnnnoooo----ssssttttaaaattttssss
  2763.           For each non-inline function processed,  the   ---- mmmmssssttttaaaattttssss
  2764.           switch  causes  the  compiler  to  emit one line to the
  2765.           standard error file to print statistics about the  pro-
  2766.  
  2767.  
  2768.  
  2769. GNU Tools            Last change: 1993/10/13                   42
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776. GCC(1)                      GNU Tools                      GCC(1)
  2777.  
  2778.  
  2779.  
  2780.           gram (number of registers saved, stack size, etc.).
  2781.  
  2782.      ----mmmmmmmmeeeemmmmccccppppyyyy
  2783.  
  2784.      ----mmmmnnnnoooo----mmmmeeeemmmmccccppppyyyy
  2785.           The ----mmmmmmmmeeeemmmmccccppppyyyy switch makes all block moves call the  ap-
  2786.           propriate  string function (mmmmeeeemmmmccccppppyyyy or bbbbccccooooppppyyyy) instead of
  2787.           possibly generating inline code.
  2788.  
  2789.      ----mmmmmmmmiiiippppssss----ttttffffiiiilllleeee
  2790.  
  2791.      ----mmmmnnnnoooo----mmmmiiiippppssss----ttttffffiiiilllleeee
  2792.           The ----mmmmnnnnoooo----mmmmiiiippppssss----ttttffffiiiilllleeee  switch  causes  the  compiler  not
  2793.           postprocess  the  object  file with the mmmmiiiippppssss----ttttffffiiiilllleeee pro-
  2794.           gram, after the MIPS assembler has generated it to  add
  2795.           debug support.  If mmmmiiiippppssss----ttttffffiiiilllleeee is not run, then no local
  2796.           variables will be available to the debugger.  In  addi-
  2797.           tion, ssssttttaaaaggggeeee2222 and ssssttttaaaaggggeeee3333 objects will have the temporary
  2798.           file names passed to the assembler embedded in the  ob-
  2799.           ject file, which means the objects will not compare the
  2800.           same.
  2801.  
  2802.      ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2803.           Generate output containing library calls  for  floating
  2804.           point.   _W_A_R_N_I_N_G:  the requisite libraries are not part
  2805.           of GNU CC.  Normally the facilities  of  the  machine's
  2806.           usual  C  compiler  are  used,  but  this can't be done
  2807.           directly in cross-compilation.  You must make your  own
  2808.           arrangements  to provide suitable library functions for
  2809.           cross-compilation.
  2810.  
  2811.      ----mmmmhhhhaaaarrrrdddd----ffffllllooooaaaatttt
  2812.           Generate output containing floating point instructions.
  2813.           This is the default if you use the unmodified sources.
  2814.  
  2815.      ----mmmmffffpppp66664444
  2816.           Assume that the FFFFRRRR bit in the status word  is  on,  and
  2817.           that  there are 32 64-bit floating point registers, in-
  2818.           stead of 32 32-bit floating point registers.  You  must
  2819.           also specify the ----mmmmccccppppuuuu====rrrr4444000000000000 and ----mmmmiiiippppssss3333 switches.
  2820.  
  2821.      ----mmmmffffpppp33332222
  2822.           Assume that there are 32 32-bit floating  point  regis-
  2823.           ters.  This is the default.
  2824.  
  2825.      ----mmmmaaaabbbbiiiiccccaaaallllllllssss
  2826.  
  2827.      ----mmmmnnnnoooo----aaaabbbbiiiiccccaaaallllllllssss
  2828.           Emit (or do  not  emit)  the  ....aaaabbbbiiiiccccaaaallllllllssss,  ....ccccppppllllooooaaaadddd,  and
  2829.           ....ccccpppprrrreeeessssttttoooorrrreeee pseudo operations that some System V.4 ports
  2830.           use for position independent code.
  2831.  
  2832.  
  2833.  
  2834.  
  2835. GNU Tools            Last change: 1993/10/13                   43
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842. GCC(1)                      GNU Tools                      GCC(1)
  2843.  
  2844.  
  2845.  
  2846.      ----mmmmhhhhaaaallllffff----ppppiiiicccc
  2847.  
  2848.      ----mmmmnnnnoooo----hhhhaaaallllffff----ppppiiiicccc
  2849.           The ----mmmmhhhhaaaallllffff----ppppiiiicccc switch says to put  pointers  to  extern
  2850.           references  into  the  data  section  and load them up,
  2851.           rather than put the references  in  the  text  section.
  2852.           This option does not work at present.  ----GGGG_n_u_m Put global
  2853.           and static items less than or equal to _n_u_m  bytes  into
  2854.           the  small  data  or bss sections instead of the normal
  2855.           data or bss section.  This allows the assembler to emit
  2856.           one  word  memory  reference  instructions based on the
  2857.           global pointer (ggggpppp or $$$$22228888), instead of the  normal  two
  2858.           words  used.  By default, _n_u_m is 8 when the MIPS assem-
  2859.           bler is used, and 0 when the  GNU  assembler  is  used.
  2860.           The   ---- GGGG_n_u_m switch is also passed to the assembler and
  2861.           linker.  All modules should be compiled with the same ----
  2862.           GGGG_n_u_m value.
  2863.  
  2864.      ----nnnnooooccccpppppppp
  2865.           Tell the MIPS assembler to not  run  it's  preprocessor
  2866.           over user assembler files (with a `....ssss' suffix) when as-
  2867.           sembling them.
  2868.  
  2869.      These `----mmmm' options are defined for the Intel 80386 family of
  2870.      computers:  ----mmmm444488886666
  2871.  
  2872.      ----mmmmnnnnoooo----444488886666
  2873.           Control whether or not code is optimized for a 486  in-
  2874.           stead  of an 386.  Code generated for a 486 will run on
  2875.           a 386 and vice versa.
  2876.  
  2877.      ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2878.           Generate output containing library calls  for  floating
  2879.           point.   _W_a_r_n_i_n_g:  the requisite libraries are not part
  2880.           of GNU CC.  Normally the facilities  of  the  machine's
  2881.           usual  C  compiler  are  used,  but  this can't be done
  2882.           directly in cross-compilation.  You must make your  own
  2883.           arrangements  to provide suitable library functions for
  2884.           cross-compilation.
  2885.  
  2886.           On machines where a  function  returns  floating  point
  2887.           results  in  the  80387  register  stack, some floating
  2888.           point opcodes may be emitted even if `----mmmmssssoooofffftttt----ffffllllooooaaaatttt'  is
  2889.           used.
  2890.  
  2891.      ----mmmmnnnnoooo----ffffpppp----rrrreeeetttt----iiiinnnn----333388887777
  2892.           Do not use the FPU registers for return values of func-
  2893.           tions.
  2894.  
  2895.           The  usual  calling  convention  has  functions  return
  2896.           values  of  types  ffffllllooooaaaatttt and ddddoooouuuubbbblllleeee in an FPU register,
  2897.           even if there is no FPU.  The idea is that the  operat-
  2898.  
  2899.  
  2900.  
  2901. GNU Tools            Last change: 1993/10/13                   44
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908. GCC(1)                      GNU Tools                      GCC(1)
  2909.  
  2910.  
  2911.  
  2912.           ing system should emulate an FPU.
  2913.  
  2914.           The option `----mmmmnnnnoooo----ffffpppp----rrrreeeetttt----iiiinnnn----333388887777' causes such  values  to
  2915.           be returned in ordinary CPU registers instead.
  2916.  
  2917.      These `----mmmm' options are defined for the HPPA family  of  com-
  2918.      puters:
  2919.  
  2920.      ----mmmmppppaaaa----rrrriiiisssscccc----1111----0000
  2921.           Generate code for a PA 1.0 processor.
  2922.  
  2923.      ----mmmmppppaaaa----rrrriiiisssscccc----1111----1111
  2924.           Generate code for a PA 1.1 processor.
  2925.  
  2926.      ----mmmmkkkkeeeerrrrnnnneeeellll
  2927.           Generate code which is suitable  for  use  in  kernels.
  2928.           Specifically,  avoid  aaaadddddddd  instructions in which one of
  2929.           the arguments is the DP register;  generate  aaaaddddddddiiiillll  in-
  2930.           structions  instead.   This avoids a rather serious bug
  2931.           in the HP-UX linker.
  2932.  
  2933.      ----mmmmsssshhhhaaaarrrreeeedddd----lllliiiibbbbssss
  2934.           Generate code that can be linked against  HP-UX  shared
  2935.           libraries.   This option is not fully function yet, and
  2936.           is not on by default for any PA target.  Using this op-
  2937.           tion  can  cause  incorrect code to be generated by the
  2938.           compiler.
  2939.  
  2940.      ----mmmmnnnnoooo----sssshhhhaaaarrrreeeedddd----lllliiiibbbbssss
  2941.           Don't generate code that will be linked against  shared
  2942.           libraries.  This is the default for all PA targets.
  2943.  
  2944.      ----mmmmlllloooonnnngggg----ccccaaaallllllllssss
  2945.           Generate code which allows calls to  functions  greater
  2946.           than 256K away from the caller when the caller and cal-
  2947.           lee are in the same source file.  Do not turn this  op-
  2948.           tion on unless code refuses to link with "branch out of
  2949.           range errors from the linker.
  2950.  
  2951.      ----mmmmddddiiiissssaaaabbbblllleeee----ffffpppprrrreeeeggggssss
  2952.           Prevent floating point registers from being used in any
  2953.           manner.   This is necessary for compiling kernels which
  2954.           perform lazy context switching of floating point regis-
  2955.           ters.   If  you  use this option and attempt to perform
  2956.           floating point operations, the compiler will abort.
  2957.  
  2958.      ----mmmmddddiiiissssaaaabbbblllleeee----iiiinnnnddddeeeexxxxiiiinnnngggg
  2959.           Prevent the compiler from using indexing address modes.
  2960.           This avoids some rather obscure problems when compiling
  2961.           MIG generated code under MACH.
  2962.  
  2963.      ----mmmmttttrrrraaaaiiiilllliiiinnnngggg----ccccoooolllloooonnnn
  2964.  
  2965.  
  2966.  
  2967. GNU Tools            Last change: 1993/10/13                   45
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974. GCC(1)                      GNU Tools                      GCC(1)
  2975.  
  2976.  
  2977.  
  2978.           Add a colon to the end of label  definitions  (for  ELF
  2979.           assemblers).
  2980.  
  2981.      These `----mmmm' options are defined for the Intel 80960 family of
  2982.      computers:
  2983.  
  2984.      ----mmmm_c_p_u-_t_y_p_e
  2985.           Assume the defaults for the machine type  _c_p_u-_t_y_p_e  for
  2986.           instruction and addressing-mode availability and align-
  2987.           ment.  The default _c_p_u-_t_y_p_e is kkkkbbbb;  other  choices  are
  2988.           kkkkaaaa, mmmmcccc, ccccaaaa, ccccffff, ssssaaaa, and ssssbbbb.
  2989.  
  2990.      ----mmmmnnnnuuuummmmeeeerrrriiiiccccssss
  2991.  
  2992.      ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2993.           The ----mmmmnnnnuuuummmmeeeerrrriiiiccccssss option indicates that the processor does
  2994.           support  floating-point instructions.  The ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2995.           option indicates that floating-point support should not
  2996.           be assumed.
  2997.  
  2998.      ----mmmmlllleeeeaaaaffff----pppprrrroooocccceeeedddduuuurrrreeeessss
  2999.  
  3000.      ----mmmmnnnnoooo----lllleeeeaaaaffff----pppprrrroooocccceeeedddduuuurrrreeeessss
  3001.           Do (or do not) attempt to alter leaf procedures  to  be
  3002.           callable  with  the  _b_a_l  instruction  as well as _c_a_l_l.
  3003.           This will result in more efficient  code  for  explicit
  3004.           calls  when  the  _b_a_l instruction can be substituted by
  3005.           the assembler or linker, but  less  efficient  code  in
  3006.           other  cases,  such  as calls via function pointers, or
  3007.           using a linker that doesn't support this optimization.
  3008.  
  3009.      ----mmmmttttaaaaiiiillll----ccccaaaallllllll
  3010.  
  3011.      ----mmmmnnnnoooo----ttttaaaaiiiillll----ccccaaaallllllll
  3012.           Do (or do not) make additional attempts  (beyond  those
  3013.           of the machine-independent portions of the compiler) to
  3014.           optimize tail-recursive calls into branches.   You  may
  3015.           not  want  to  do  this  because the detection of cases
  3016.           where this is not valid is not totally  complete.   The
  3017.           default is ----mmmmnnnnoooo----ttttaaaaiiiillll----ccccaaaallllllll.
  3018.  
  3019.      ----mmmmccccoooommmmpppplllleeeexxxx----aaaaddddddddrrrr
  3020.  
  3021.      ----mmmmnnnnoooo----ccccoooommmmpppplllleeeexxxx----aaaaddddddddrrrr
  3022.           Assume (or do not assume) that the use of a complex ad-
  3023.           dressing  mode  is  a win on this implementation of the
  3024.           i960.  Complex addressing modes may not  be  worthwhile
  3025.           on  the  K-series,  but  they  definitely are on the C-
  3026.           series.  The default is currently ----mmmmccccoooommmmpppplllleeeexxxx ---- aaaaddddddddrrrr  for
  3027.           all processors except the CB and CC.
  3028.  
  3029.      ----mmmmccccooooddddeeee----aaaalllliiiiggggnnnn
  3030.  
  3031.  
  3032.  
  3033. GNU Tools            Last change: 1993/10/13                   46
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040. GCC(1)                      GNU Tools                      GCC(1)
  3041.  
  3042.  
  3043.  
  3044.      ----mmmmnnnnoooo----ccccooooddddeeee----aaaalllliiiiggggnnnn
  3045.           Align code to 8-byte boundaries for faster fetching (or
  3046.           don't  bother).   Currently turned on by default for C-
  3047.           series implementations only.
  3048.  
  3049.      ----mmmmiiiicccc----ccccoooommmmppppaaaatttt
  3050.  
  3051.      ----mmmmiiiicccc2222....0000----ccccoooommmmppppaaaatttt
  3052.  
  3053.      ----mmmmiiiicccc3333....0000----ccccoooommmmppppaaaatttt
  3054.           Enable compatibility with iC960 v2.0 or v3.0.
  3055.  
  3056.      ----mmmmaaaassssmmmm----ccccoooommmmppppaaaatttt
  3057.  
  3058.      ----mmmmiiiinnnntttteeeellll----aaaassssmmmm
  3059.           Enable compatibility with the iC960 assembler.
  3060.  
  3061.      ----mmmmssssttttrrrriiiicccctttt----aaaalllliiiiggggnnnn
  3062.  
  3063.      ----mmmmnnnnoooo----ssssttttrrrriiiicccctttt----aaaalllliiiiggggnnnn
  3064.           Do not permit (do permit) unaligned accesses.
  3065.  
  3066.      ----mmmmoooolllldddd----aaaalllliiiiggggnnnn
  3067.           Enable structure-alignment compatibility  with  Intel's
  3068.           gcc release version 1.3 (based on gcc 1.37).  Currently
  3069.           this is buggy in that ####pppprrrraaaaggggmmmmaaaa aaaalllliiiiggggnnnn 1111 is always assumed
  3070.           as well, and cannot be turned off.
  3071.  
  3072.      These `----mmmm' options are defined for the DEC Alpha implementa-
  3073.      tions:
  3074.  
  3075.      ----mmmmnnnnoooo----ssssoooofffftttt----ffffllllooooaaaatttt
  3076.  
  3077.      ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  3078.           Use (do not use) the hardware  floating-point  instruc-
  3079.           tions for floating-point operations.  When ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  3080.           is specified, functions in `lllliiiibbbbggggcccccccc1111....cccc' will be used  to
  3081.           perform floating-point operations.  Unless they are re-
  3082.           placed by  routines  that  emulate  the  floating-point
  3083.           operations,  or  compiled in such a way as to call such
  3084.           emulations  routines,   these   routines   will   issue
  3085.           floating-point  operations.    If you are compiling for
  3086.           an Alpha without floating-point  operations,  you  must
  3087.           ensure  that  the  library  is  built so as not to call
  3088.           them.
  3089.  
  3090.           Note that Alpha implementations without  floating-point
  3091.           operations  are  required to have floating-point regis-
  3092.           ters.
  3093.  
  3094.      ----mmmmffffpppp----rrrreeeegggg
  3095.  
  3096.  
  3097.  
  3098.  
  3099. GNU Tools            Last change: 1993/10/13                   47
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106. GCC(1)                      GNU Tools                      GCC(1)
  3107.  
  3108.  
  3109.  
  3110.      ----mmmmnnnnoooo----ffffpppp----rrrreeeeggggssss
  3111.           Generate code that uses (does not  use)  the  floating-
  3112.           point register set.  ----mmmmnnnnoooo----ffffpppp----rrrreeeeggggssss implies ----mmmmssssoooofffftttt----ffffllllooooaaaatttt.
  3113.           If the floating-point register set is not used,  float-
  3114.           ing  point  operands are passed in integer registers as
  3115.           if they were integers and  floating-point  results  are
  3116.           passed  in  $0  instead of $f0.  This is a non-standard
  3117.           calling sequence, so any function with a floating-point
  3118.           argument or return value called by code compiled with ----
  3119.           mmmmnnnnoooo----ffffpppp----rrrreeeeggggssss must also be compiled with that option.
  3120.  
  3121.           A typical use of this option is building a kernel  that
  3122.           does  not use, and hence need not save and restore, any
  3123.           floating-point registers.
  3124.  
  3125.      These additional options are available on System V Release 4
  3126.      for compatibility with other compilers on those systems:
  3127.  
  3128.      ----GGGG    On SVr4 systems, ggggcccccccc accepts the  option  ` ---- GGGG'  (and
  3129.           passes it to the system linker), for compatibility with
  3130.           other compilers.  However, we suggest you use `----ssssyyyymmmmbbbboooollll----
  3131.           iiiicccc'  or  `----sssshhhhaaaarrrreeeedddd' as appropriate, instead of supplying
  3132.           linker options on the ggggcccccccc command line.
  3133.  
  3134.      ----QQQQyyyy   Identify the versions of each tool used  by  the  com-
  3135.           piler, in a ....iiiiddddeeeennnntttt assembler directive in the output.
  3136.  
  3137.      ----QQQQnnnn   Refrain from adding ....iiiiddddeeeennnntttt directives  to  the  output
  3138.           file (this is the default).
  3139.  
  3140.      ----YYYYPPPP,,,,_d_i_r_s
  3141.           Search the directories _d_i_r_s, and  no  others,  for  li-
  3142.           braries specified with `----llll'.  You can separate directo-
  3143.           ry entries in _d_i_r_s from one another with colons.
  3144.  
  3145.      ----YYYYmmmm,,,,_d_i_r
  3146.           Look in the directory _d_i_r to find the M4  preprocessor.
  3147.           The assembler uses this option.
  3148.  
  3149. CCCCOOOODDDDEEEE GGGGEEEENNNNEEEERRRRAAAATTTTIIIIOOOONNNN OOOOPPPPTTTTIIIIOOOONNNNSSSS
  3150.      These machine-independent options control the interface con-
  3151.      ventions used in code generation.
  3152.  
  3153.      Most of them begin with `-f'.  These options have both posi-
  3154.      tive  and negative forms; the negative form of `----ffffffffoooooooo' would
  3155.      be `----ffffnnnnoooo----ffffoooooooo'.  In the table below, only one of the forms is
  3156.      listed-the one which is not the default.  You can figure out
  3157.      the other form by either removing `nnnnoooo---- ' or adding it.
  3158.  
  3159.      ----ffffnnnnoooonnnnnnnnuuuullllllll----oooobbbbjjjjeeeeccccttttssss
  3160.           Assume that objects reached through references are  not
  3161.           null (C++ only).
  3162.  
  3163.  
  3164.  
  3165. GNU Tools            Last change: 1993/10/13                   48
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172. GCC(1)                      GNU Tools                      GCC(1)
  3173.  
  3174.  
  3175.  
  3176.           Normally, GNU C++ makes conservative assumptions  about
  3177.           objects  reached  through references.  For example, the
  3178.           compiler must check that aaaa is not null in code like the
  3179.           following:
  3180.  
  3181.           obj &a = g (); a.f (2);
  3182.  
  3183.           Checking that references of  this  sort  have  non-null
  3184.           values requires extra code, however, and it is unneces-
  3185.           sary for many  programs.   You  can  use  ` ---- ffffnnnnoooonnnnnnnnuuuullllllll----
  3186.           oooobbbbjjjjeeeeccccttttssss'  to  omit the checks for null, if your program
  3187.           doesn't require checking.
  3188.  
  3189.      ----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
  3190.           Use the same convention for returning ssssttttrrrruuuucccctttt and  uuuunnnniiiioooonnnn
  3191.           values  that  is  used  by the usual C compiler on your
  3192.           system.  This convention is less  efficient  for  small
  3193.           structures,  and  on many machines it fails to be reen-
  3194.           trant; but it has the advantage of allowing intercalla-
  3195.           bility between GCC-compiled code and PCC-compiled code.
  3196.  
  3197.      ----ffffrrrreeeegggg----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
  3198.           Use the convention that ssssttttrrrruuuucccctttt and uuuunnnniiiioooonnnn values are re-
  3199.           turned  in registers when possible.  This is more effi-
  3200.           cient for small structures than ----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn.
  3201.  
  3202.           If you specify neither ----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn nor ---- ffffrrrreeeegggg ----
  3203.           ssssttttrrrruuuucccctttt ----rrrreeeettttuuuurrrrnnnn, GNU CC defaults to whichever convention
  3204.           is standard for the target.  If there  is  no  standard
  3205.           convention, GNU CC defaults to ----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn.
  3206.  
  3207.      ----ffffsssshhhhoooorrrrtttt----eeeennnnuuuummmmssss
  3208.           Allocate to an eeeennnnuuuummmm type only as many bytes as it needs
  3209.           for the declared range of possible values.  Specifical-
  3210.           ly, the eeeennnnuuuummmm type will be equivalent  to  the  smallest
  3211.           integer type which has enough room.
  3212.  
  3213.      ----ffffsssshhhhoooorrrrtttt----ddddoooouuuubbbblllleeee
  3214.           Use the same size for ddddoooouuuubbbblllleeee as for ffffllllooooaaaatttt .
  3215.  
  3216.      ----ffffsssshhhhaaaarrrreeeedddd----ddddaaaattttaaaa
  3217.           Requests that the data and non-ccccoooonnnnsssstttt variables of  this
  3218.           compilation  be  shared  data rather than private data.
  3219.           The distinction makes sense only on  certain  operating
  3220.           systems,  where shared data is shared between processes
  3221.           running the same program, while private data exists  in
  3222.           one copy per process.
  3223.  
  3224.      ----ffffnnnnoooo----ccccoooommmmmmmmoooonnnn
  3225.           Allocate even uninitialized global variables in the bss
  3226.           section of the object file, rather than generating them
  3227.           as common blocks.  This has the effect that if the same
  3228.  
  3229.  
  3230.  
  3231. GNU Tools            Last change: 1993/10/13                   49
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238. GCC(1)                      GNU Tools                      GCC(1)
  3239.  
  3240.  
  3241.  
  3242.           variable  is declared (without eeeexxxxtttteeeerrrrnnnn) in two different
  3243.           compilations, you will get an error when you link them.
  3244.           The  only reason this might be useful is if you wish to
  3245.           verify that the program  will  work  on  other  systems
  3246.           which always work this way.
  3247.  
  3248.      ----ffffnnnnoooo----iiiiddddeeeennnntttt
  3249.           Ignore the `####iiiiddddeeeennnntttt' directive.
  3250.  
  3251.      ----ffffnnnnoooo----ggggnnnnuuuu----lllliiiinnnnkkkkeeeerrrr
  3252.           Do not output global initializations (such as C++  con-
  3253.           structors  and destructors) in the form used by the GNU
  3254.           linker (on systems where the GNU linker is the standard
  3255.           method  of  handling  them).   Use this option when you
  3256.           want to use a non-GNU linker, which also requires using
  3257.           the ccccoooolllllllleeeecccctttt2222 program to make sure the system linker in-
  3258.           cludes constructors and destructors.  (ccccoooolllllllleeeecccctttt2222 is  in-
  3259.           cluded  in the GNU CC distribution.)  For systems which
  3260.           _m_u_s_t use ccccoooolllllllleeeecccctttt2222, the compiler driver ggggcccccccc  is  config-
  3261.           ured to do this automatically.
  3262.  
  3263.      ----ffffiiiinnnnhhhhiiiibbbbiiiitttt----ssssiiiizzzzeeee----ddddiiiirrrreeeeccccttttiiiivvvveeee
  3264.           Don't output a ....ssssiiiizzzzeeee assembler directive,  or  anything
  3265.           else  that would cause trouble if the function is split
  3266.           in the middle, and the two halves are placed  at  loca-
  3267.           tions  far  apart  in memory.  This option is used when
  3268.           compiling `ccccrrrrttttssssttttuuuuffffffff....cccc'; you should not need to  use  it
  3269.           for anything else.
  3270.  
  3271.      ----ffffvvvveeeerrrrbbbboooosssseeee----aaaassssmmmm
  3272.           Put extra commentary information in the  generated  as-
  3273.           sembly  code  to make it more readable.  This option is
  3274.           generally only of use to those  who  actually  need  to
  3275.           read  the generated assembly code (perhaps while debug-
  3276.           ging the compiler itself).
  3277.  
  3278.      ----ffffvvvvoooollllaaaattttiiiilllleeee
  3279.           Consider all memory references through pointers  to  be
  3280.           volatile.
  3281.  
  3282.      ----ffffvvvvoooollllaaaattttiiiilllleeee----gggglllloooobbbbaaaallll
  3283.           Consider all memory references  to  extern  and  global
  3284.           data items to be volatile.
  3285.  
  3286.      ----ffffppppiiiicccc
  3287.           If  supported  for  the   target   machines,   generate
  3288.           position-independent code, suitable for use in a shared
  3289.           library.
  3290.  
  3291.      ----ffffPPPPIIIICCCC
  3292.           If supported for the  target  machine,  emit  position-
  3293.           independent code, suitable for dynamic linking, even if
  3294.  
  3295.  
  3296.  
  3297. GNU Tools            Last change: 1993/10/13                   50
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304. GCC(1)                      GNU Tools                      GCC(1)
  3305.  
  3306.  
  3307.  
  3308.           branches need large displacements.
  3309.  
  3310.      ----ffffffffiiiixxxxeeeedddd----_r_e_g
  3311.           Treat the register named _r_e_g as a fixed register;  gen-
  3312.           erated code should never refer to it (except perhaps as
  3313.           a stack pointer, frame pointer or in some  other  fixed
  3314.           role).
  3315.  
  3316.           _r_e_g must be the name of a register.  The register names
  3317.           accepted  are  machine-specific  and are defined in the
  3318.           RRRREEEEGGGGIIIISSSSTTTTEEEERRRR____NNNNAAAAMMMMEEEESSSS macro in the machine  description  macro
  3319.           file.
  3320.  
  3321.           This flag does not have a  negative  form,  because  it
  3322.           specifies a three-way choice.
  3323.  
  3324.      ----ffffccccaaaallllllll----uuuusssseeeedddd----_r_e_g
  3325.           Treat the register named _r_e_g as an allocatable register
  3326.           that  is  clobbered by function calls.  It may be allo-
  3327.           cated for temporaries or variables  that  do  not  live
  3328.           across  a  call.   Functions compiled this way will not
  3329.           save and restore the register _r_e_g.
  3330.  
  3331.           Use of this flag for a register that has a  fixed  per-
  3332.           vasive  role  in the machine's execution model, such as
  3333.           the stack pointer or frame pointer, will produce disas-
  3334.           trous results.
  3335.  
  3336.           This flag does not have a  negative  form,  because  it
  3337.           specifies a three-way choice.
  3338.  
  3339.      ----ffffccccaaaallllllll----ssssaaaavvvveeeedddd----_r_e_g
  3340.           Treat the register named _r_e_g as an allocatable register
  3341.           saved  by functions.  It may be allocated even for tem-
  3342.           poraries or variables that live across a  call.   Func-
  3343.           tions  compiled  this way will save and restore the re-
  3344.           gister _r_e_g if they use it.
  3345.  
  3346.           Use of this flag for a register that has a  fixed  per-
  3347.           vasive  role  in the machine's execution model, such as
  3348.           the stack pointer or frame pointer, will produce disas-
  3349.           trous results.
  3350.  
  3351.           A different sort of disaster will result from  the  use
  3352.           of  this  flag  for a register in which function values
  3353.           may be returned.
  3354.  
  3355.           This flag does not have a  negative  form,  because  it
  3356.           specifies a three-way choice.
  3357.  
  3358. PPPPRRRRAAAAGGGGMMMMAAAASSSS
  3359.      Two `####pppprrrraaaaggggmmmmaaaa' directives are supported for GNU C++, to  per-
  3360.  
  3361.  
  3362.  
  3363. GNU Tools            Last change: 1993/10/13                   51
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370. GCC(1)                      GNU Tools                      GCC(1)
  3371.  
  3372.  
  3373.  
  3374.      mit using the same header file for two purposes: as a defin-
  3375.      ition of interfaces to a given object class, and as the full
  3376.      definition of the contents of that object class.
  3377.  
  3378.      ####pppprrrraaaaggggmmmmaaaa iiiinnnntttteeeerrrrffffaaaacccceeee
  3379.           (C++ only.)  Use this directive in  header  files  that
  3380.           define object classes, to save space in most of the ob-
  3381.           ject files that use  those  classes.   Normally,  local
  3382.           copies  of certain information (backup copies of inline
  3383.           member functions, debugging information, and the inter-
  3384.           nal  tables  that  implement virtual functions) must be
  3385.           kept in each object file that  includes  class  defini-
  3386.           tions.   You can use this pragma to avoid such duplica-
  3387.           tion.  When a header file  containing  `####pppprrrraaaaggggmmmmaaaa  iiiinnnntttteeeerrrr----
  3388.           ffffaaaacccceeee'  is included in a compilation, this auxiliary in-
  3389.           formation will not be generated (unless the main  input
  3390.           source file itself uses `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn').  In-
  3391.           stead, the object files will contain references  to  be
  3392.           resolved at link time.
  3393.  
  3394.      ####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn
  3395.  
  3396.      ####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn """"_o_b_j_e_c_t_s....hhhh""""
  3397.           (C++ only.)  Use this pragma in a main input file, when
  3398.           you  want  full output from included header files to be
  3399.           generated (and made globally  visible).   The  included
  3400.           header  file,  in turn, should use `####pppprrrraaaaggggmmmmaaaa iiiinnnntttteeeerrrrffffaaaacccceeee'.
  3401.           Backup copies of inline member functions, debugging in-
  3402.           formation,  and  the  internal tables used to implement
  3403.           virtual functions are all generated  in  implementation
  3404.           files.
  3405.  
  3406.           If you use `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn' with  no  argument,
  3407.           it applies to an include file with the same basename as
  3408.           your  source  file;  for  example,  in   `aaaallllllllccccllllaaaassssssss....cccccccc',
  3409.           `####pppprrrraaaaggggmmmmaaaa  iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn'  by  itself  is equivalent to
  3410.           `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn """"aaaallllllllccccllllaaaassssssss....hhhh""""'.  Use the  string
  3411.           argument  if  you  want a single implementation file to
  3412.           include code from multiple header files.
  3413.  
  3414.           There is no way to split up the contents  of  a  single
  3415.           header file into multiple implementation files.
  3416.  
  3417. FFFFIIIILLLLEEEESSSS
  3418.      file.c             C source file
  3419.      file.h             C header (preprocessor) file
  3420.      file.i             preprocessed C source file
  3421.      file.C             C++ source file
  3422.      file.cc            C++ source file
  3423.      file.cxx           C++ source file
  3424.      file.m             Objective-C source file
  3425.      file.s             assembly language file
  3426.  
  3427.  
  3428.  
  3429. GNU Tools            Last change: 1993/10/13                   52
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436. GCC(1)                      GNU Tools                      GCC(1)
  3437.  
  3438.  
  3439.  
  3440.      file.o             object file
  3441.      a.out              link edited output
  3442.      _T_M_P_D_I_R/cc*         temporary files
  3443.      _L_I_B_D_I_R/cpp         preprocessor
  3444.      _L_I_B_D_I_R/cc1         compiler for C
  3445.      _L_I_B_D_I_R/cc1plus     compiler for C++
  3446.      _L_I_B_D_I_R/collect     linker front end needed on some machines
  3447.      _L_I_B_D_I_R/libgcc.a    GCC subroutine library
  3448.      /lib/crt[01n].o    start-up routine
  3449.      _L_I_B_D_I_R/ccrt0       additional start-up routine for C++
  3450.      /lib/libc.a        standard C library, see
  3451.      _i_n_t_r_o(3)
  3452.      /usr/include       standard directory for ####iiiinnnncccclllluuuuddddeeee files
  3453.      _L_I_B_D_I_R/include     standard gcc directory for ####iiiinnnncccclllluuuuddddeeee files
  3454.      _L_I_B_D_I_R/g++-include additional g++ directory for ####iiiinnnncccclllluuuuddddeeee
  3455.  
  3456.      _L_I_B_D_I_R is usually ////uuuussssrrrr////llllooooccccaaaallll////lllliiiibbbb////_m_a_c_h_i_n_e/_v_e_r_s_i_o_n.
  3457.      _T_M_P_D_I_R comes from the environment variable  TTTTMMMMPPPPDDDDIIIIRRRR  (default
  3458.      ////uuuussssrrrr////ttttmmmmpppp if available, else ////ttttmmmmpppp).
  3459.  
  3460. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  3461.      cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
  3462.      `ggggcccccccc', `ccccpppppppp', `aaaassss', `lllldddd', and `ggggddddbbbb' entries in iiiinnnnffffoooo.
  3463.      _U_s_i_n_g _a_n_d _P_o_r_t_i_n_g _G_N_U  _C_C  (_f_o_r  _v_e_r_s_i_o_n  _2._0),  Richard  M.
  3464.      Stallman; _T_h_e _C _P_r_e_p_r_o_c_e_s_s_o_r, Richard M. Stallman; _D_e_b_u_g_g_i_n_g
  3465.      _w_i_t_h _G_D_B: _t_h_e _G_N_U _S_o_u_r_c_e-_L_e_v_e_l _D_e_b_u_g_g_e_r, Richard M. Stallman
  3466.      and  Roland H. Pesch; _U_s_i_n_g _a_s: _t_h_e _G_N_U _A_s_s_e_m_b_l_e_r, Dean Els-
  3467.      ner, Jay Fenlason & friends; _l_d: _t_h_e _G_N_U _l_i_n_k_e_r, Steve Cham-
  3468.      berlain and Roland Pesch.
  3469.  
  3470. BBBBUUUUGGGGSSSS
  3471.      For instructions on reporting bugs, see the GCC manual.
  3472.  
  3473. CCCCOOOOPPPPYYYYIIIINNNNGGGG
  3474.      Copyright 1991, 1992, 1993 Free Software Foundation, Inc.
  3475.  
  3476.      Permission is granted to make and distribute verbatim copies
  3477.      of  this  manual provided the copyright notice and this per-
  3478.      mission notice are preserved on all copies.
  3479.  
  3480.      Permission is granted to copy and distribute  modified  ver-
  3481.      sions of this manual under the conditions for verbatim copy-
  3482.      ing, provided that the entire resulting derived work is dis-
  3483.      tributed under the terms of a permission notice identical to
  3484.      this one.
  3485.  
  3486.      Permission is granted to copy and distribute translations of
  3487.      this  manual  into  another language, under the above condi-
  3488.      tions for modified versions, except that this permission no-
  3489.      tice  may  be  included in translations approved by the Free
  3490.      Software Foundation instead of in the original English.
  3491.  
  3492.  
  3493.  
  3494.  
  3495. GNU Tools            Last change: 1993/10/13                   53
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502. GCC(1)                      GNU Tools                      GCC(1)
  3503.  
  3504.  
  3505.  
  3506. AAAAUUUUTTTTHHHHOOOORRRRSSSS
  3507.      See the GNU CC Manual for the contributors to GNU CC.
  3508.  
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.  
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533.  
  3534.  
  3535.  
  3536.  
  3537.  
  3538.  
  3539.  
  3540.  
  3541.  
  3542.  
  3543.  
  3544.  
  3545.  
  3546.  
  3547.  
  3548.  
  3549.  
  3550.  
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.  
  3558.  
  3559.  
  3560.  
  3561. GNU Tools            Last change: 1993/10/13                   54
  3562.  
  3563.  
  3564.  
  3565.